diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 00000000000..aeefafe1226
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,54 @@
+* text=auto
+
+*.bat text
+*.c text
+*.cpp text
+*.css text
+*.ewp text
+*.gdb text
+*.h text
+*.hex text
+*.html text
+*.htm text
+*.icf text
+*.inf text
+*.ini text
+*.ino text
+*.java text
+*.js text
+*.mk text
+*.ld text
+*.lds text
+*.pde text
+*.pl text
+*.po text
+*.prefs text
+*.project text
+*.properties text
+*.py text
+*.s text
+*.S text
+*.sh text
+*.svd text
+*.svg text
+*.txt text
+*.uvproj text
+*.uvopt text
+*.xml text
+
+*.a binary
+*.bmp binary
+*.bz2 binary
+*.dll binary
+*.exe binary
+*.ico binary
+*.gz binary
+*.jar binary
+*.jpg binary
+*.lib binary
+*.o binary
+*.pdf binary
+*.png binary
+*.so binary
+*.tgz binary
+*.zip binary
diff --git a/.project b/.project
index 0b76a40ba80..666006c4305 100644
--- a/.project
+++ b/.project
@@ -1,17 +1,17 @@
-
-
- processing-head
-
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
-
- org.eclipse.jdt.core.javanature
-
-
+
+
+ processing-head
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/app/.classpath_vista b/app/.classpath_vista
index c7ec5acb94c..8337a62a818 100644
--- a/app/.classpath_vista
+++ b/app/.classpath_vista
@@ -1,21 +1,21 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/.project b/app/.project
index 69a82c3d004..78e91ccbbfa 100644
--- a/app/.project
+++ b/app/.project
@@ -1,17 +1,17 @@
-
-
- processing
-
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
-
- org.eclipse.jdt.core.javanature
-
-
+
+
+ processing
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/app/src/processing/app/i18n/Resources_hu.po b/app/src/processing/app/i18n/Resources_hu.po
index d4a7b41eb09..472f4cb9ee0 100644
--- a/app/src/processing/app/i18n/Resources_hu.po
+++ b/app/src/processing/app/i18n/Resources_hu.po
@@ -1,278 +1,278 @@
-# Hungarian translations for PACKAGE package.
-# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# Robert Cseh , 2012.
-#
+# Hungarian translations for PACKAGE package.
+# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Robert Cseh , 2012.
+#
msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: Robert Cseh\n"
-"POT-Creation-Date: 2012-04-03 10:24-0400\n"
-"PO-Revision-Date: 2012-04-11 23:15-0400\n"
-"Last-Translator: Robert Cseh \n"
-"Language-Team: Hungarian\n"
-"Language: hu\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: Robert Cseh\n"
+"POT-Creation-Date: 2012-04-03 10:24-0400\n"
+"PO-Revision-Date: 2012-04-11 23:15-0400\n"
+"Last-Translator: Robert Cseh \n"
+"Language-Team: Hungarian\n"
+"Language: hu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: Editor.java:366
msgid "No files were added to the sketch."
-msgstr "Nem lett file hozzáadva a Sketch-hez."
+msgstr "Nem lett file hozzáadva a Sketch-hez."
#: Editor.java:369 Sketch.java:996
msgid "One file added to the sketch."
-msgstr "Egy file a Sketch-hez hozzáadásra került."
+msgstr "Egy file a Sketch-hez hozzáadásra került."
#: Editor.java:373
#, java-format
msgid "{0} files added to the sketch."
-msgstr "{0} file a Sketch-hez hozzáadásra került."
+msgstr "{0} file a Sketch-hez hozzáadásra került."
#: Editor.java:484
msgid "File"
-msgstr "File"
+msgstr "File"
#: Editor.java:486 EditorToolbar.java:41
msgid "New"
-msgstr "Új"
+msgstr "Új"
#: Editor.java:494 Base.java:903
msgid "Open..."
-msgstr "Megnyit..."
+msgstr "Megnyit..."
#: Editor.java:503
msgid "Sketchbook"
-msgstr "SketchBook"
+msgstr "SketchBook"
#: Editor.java:509
msgid "Examples"
-msgstr "Minták"
+msgstr "Minták"
#: Editor.java:514 Editor.java:1977
msgid "Close"
-msgstr "Kilépés"
+msgstr "Kilépés"
#: Editor.java:522 Editor.java:2017 Editor.java:2421 EditorToolbar.java:41
#: EditorToolbar.java:46
msgid "Save"
-msgstr "Mentés"
+msgstr "Mentés"
#: Editor.java:530
msgid "Save As..."
-msgstr "Mentés másként..."
+msgstr "Mentés másként..."
#: Editor.java:538 EditorToolbar.java:41
msgid "Upload"
-msgstr "Feltöltés"
+msgstr "Feltöltés"
#: Editor.java:546 EditorToolbar.java:46
msgid "Upload Using Programmer"
-msgstr "Feltöltés programozóval"
+msgstr "Feltöltés programozóval"
#: Editor.java:556
msgid "Page Setup"
-msgstr "Oldalbeállítás"
+msgstr "Oldalbeállítás"
#: Editor.java:564
msgid "Print"
-msgstr "Nyomtatás"
+msgstr "Nyomtatás"
#: Editor.java:576 Preferences.java:279
msgid "Preferences"
-msgstr "Beállítások"
+msgstr "Beállítások"
#: Editor.java:586 Base.java:782
msgid "Quit"
-msgstr "Kilépés"
+msgstr "Kilépés"
#: Editor.java:600
msgid "Sketch"
-msgstr "Sketch"
+msgstr "Sketch"
#: Editor.java:602
msgid "Verify / Compile"
-msgstr "Ellenőrzés / Fordítás"
+msgstr "Ellenőrzés / Fordítás"
#: Editor.java:629
msgid "Import Library..."
-msgstr "Függvény importálás..."
+msgstr "Függvény importálás..."
#: Editor.java:634
msgid "Show Sketch Folder"
-msgstr "Sketch mappa mutatása"
+msgstr "Sketch mappa mutatása"
#: Editor.java:643
msgid "Add File..."
-msgstr "File hozzáadása..."
+msgstr "File hozzáadása..."
#: Editor.java:656
msgid "Tools"
-msgstr "Eszközök"
+msgstr "Eszközök"
#: Editor.java:662 EditorToolbar.java:41 EditorToolbar.java:46
msgid "Serial Monitor"
-msgstr "Soros monitor"
+msgstr "Soros monitor"
#: Editor.java:682
msgid "Board"
-msgstr "Alappanel"
+msgstr "Alappanel"
#: Editor.java:690
msgid "Serial Port"
-msgstr "Soros port"
+msgstr "Soros port"
#: Editor.java:695
msgid "Programmer"
-msgstr "Programozó"
+msgstr "Programozó"
#: Editor.java:699
msgid "Burn Bootloader"
-msgstr "Bootloader beégetése"
+msgstr "Bootloader beégetése"
#: Editor.java:923
msgid "serialMenu is null"
-msgstr "Üres a serialMenü"
+msgstr "Üres a serialMenü"
#: Editor.java:927 Editor.java:934
msgid "name is null"
-msgstr "a név: üres(nincs megadva)"
+msgstr "a név: üres(nincs megadva)"
#: Editor.java:986
msgid "error retrieving port list"
-msgstr "hiba a portlista lekérésekor"
+msgstr "hiba a portlista lekérésekor"
#: Editor.java:1002
msgid "Help"
-msgstr "Súgó"
+msgstr "Súgó"
#: Editor.java:1041
msgid "Getting Started"
-msgstr "Első lépések"
+msgstr "Első lépések"
#: Editor.java:1049
msgid "Environment"
-msgstr "Környezet"
+msgstr "Környezet"
#: Editor.java:1057
msgid "Troubleshooting"
-msgstr "Hibaelhárítás"
+msgstr "Hibaelhárítás"
#: Editor.java:1065
msgid "Reference"
-msgstr "Referencia"
+msgstr "Referencia"
#: Editor.java:1073 Editor.java:2728
msgid "Find in Reference"
-msgstr "Keresés a Referenciák közt"
+msgstr "Keresés a Referenciák közt"
#: Editor.java:1083
msgid "Frequently Asked Questions"
-msgstr "Gyakran Ismételt Kérdések"
+msgstr "Gyakran Ismételt Kérdések"
#: Editor.java:1091
msgid "Visit Arduino.cc"
-msgstr "arduino.cc honlap megnyitása"
+msgstr "arduino.cc honlap megnyitása"
#: Editor.java:1094
msgid "http://arduino.cc/"
-msgstr "http://arduino.cc/"
+msgstr "http://arduino.cc/"
#: Editor.java:1102
msgid "About Arduino"
-msgstr "Arduino névjegye"
+msgstr "Arduino névjegye"
#: Editor.java:1116
msgid "Edit"
-msgstr "Szerkesztés"
+msgstr "Szerkesztés"
#: Editor.java:1119 Editor.java:1341
msgid "Undo"
-msgstr "Mégse"
+msgstr "Mégse"
#: Editor.java:1124 Editor.java:1126 Editor.java:1376
msgid "Redo"
-msgstr "Mégis"
+msgstr "Mégis"
#: Editor.java:1135 Editor.java:2652
msgid "Cut"
-msgstr "Kivágás"
+msgstr "Kivágás"
#: Editor.java:1143 Editor.java:2660
msgid "Copy"
-msgstr "Másolás"
+msgstr "Másolás"
#: Editor.java:1151 Editor.java:2668
msgid "Copy for Forum"
-msgstr "Másolás a Fórumhoz"
+msgstr "Másolás a Fórumhoz"
#: Editor.java:1163 Editor.java:2676
msgid "Copy as HTML"
-msgstr "Másolás HTML-ként"
+msgstr "Másolás HTML-ként"
#: Editor.java:1175 Editor.java:2684
msgid "Paste"
-msgstr "Beillesztés"
+msgstr "Beillesztés"
#: Editor.java:1184 Editor.java:2692
msgid "Select All"
-msgstr "Minden kijelölése"
+msgstr "Minden kijelölése"
#: Editor.java:1194 Editor.java:2702
msgid "Comment/Uncomment"
-msgstr "Megjegyzés/Mégsem"
+msgstr "Megjegyzés/Mégsem"
#: Editor.java:1202 Editor.java:2710
msgid "Increase Indent"
-msgstr "Behúzás növelése"
+msgstr "Behúzás növelése"
#: Editor.java:1210 Editor.java:2718
msgid "Decrease Indent"
-msgstr "Behúzás csökkentése"
+msgstr "Behúzás csökkentése"
#: Editor.java:1220
msgid "Find..."
-msgstr "Keresés..."
+msgstr "Keresés..."
#: Editor.java:1235
msgid "Find Next"
-msgstr "Következő keresése"
+msgstr "Következő keresése"
#: Editor.java:1245
msgid "Find Previous"
-msgstr "Előző keresése"
+msgstr "Előző keresése"
#: Editor.java:1255
msgid "Use Selection For Find"
-msgstr "Kiválasztás használata kereséshez"
+msgstr "Kiválasztás használata kereséshez"
#: Editor.java:1816
msgid "First select a word to find in the reference."
-msgstr "Először egy szót kell választani a Referenciák közti kereséshez."
+msgstr "Először egy szót kell választani a Referenciák közti kereséshez."
#: Editor.java:1823
#, java-format
msgid "No reference available for \"{0}\""
-msgstr "Referencia nem található a {0} bejegyzéshez"
+msgstr "Referencia nem található a {0} bejegyzéshez"
#: Editor.java:1826
#, java-format
msgid "{0}.html"
-msgstr "{0}.html"
+msgstr "{0}.html"
#: Editor.java:1843 Sketch.java:1647
msgid "Compiling sketch..."
-msgstr "Sketch fordítása..."
+msgstr "Sketch fordítása..."
#: Editor.java:1864 Editor.java:1881
msgid "Done compiling."
-msgstr "Fordítás kész."
+msgstr "Fordítás kész."
#: Editor.java:1973
#, java-format
msgid "Save changes to \"{0}\"? "
-msgstr "Mentés a {0} állományba? "
+msgstr "Mentés a {0} állományba? "
#: Editor.java:2006
msgid ""
@@ -280,36 +280,36 @@ msgid ""
"{ font: 11pt \"Lucida Grande\"; margin-top: 8px } Do you "
"want to save changes to this sketch before closing?
If you don't "
"save, your changes will be lost."
-msgstr ""
-"
Változtatás "
-"mentése a kilépés előtt a Sketch-be?
Mentés nékül a változtatások elvesznek."
+msgstr ""
+"
Változtatás "
+"mentése a kilépés előtt a Sketch-be?
Mentés nékül a változtatások elvesznek."
#: Editor.java:2017 Editor.java:2098 Editor.java:2418 Sketch.java:589
#: Sketch.java:741 Sketch.java:1046 Preferences.java:78
msgid "Cancel"
-msgstr "Mégse"
+msgstr "Mégse"
#: Editor.java:2017
msgid "Don't Save"
-msgstr "Nincs mentés"
+msgstr "Nincs mentés"
#: Editor.java:2089
msgid "Bad file selected"
-msgstr "Hibás file lett kiválasztva"
+msgstr "Hibás file lett kiválasztva"
#: Editor.java:2090
msgid ""
"Processing can only open its own sketches\n"
"and other files ending in .ino or .pde"
-msgstr ""
-"Processing csak a saját állományát tudja megnyitni\n"
-"vagy az .ino vagy .pde kiterjesztésűeket"
+msgstr ""
+"Processing csak a saját állományát tudja megnyitni\n"
+"vagy az .ino vagy .pde kiterjesztésűeket"
#: Editor.java:2098 Editor.java:2418 Sketch.java:589 Sketch.java:741
#: Sketch.java:1046 Preferences.java:79
msgid "OK"
-msgstr "OK"
+msgstr "OK"
#: Editor.java:2100
#, java-format
@@ -317,329 +317,329 @@ msgid ""
"The file \"{0}\" needs to be inside\n"
"a sketch folder named \"{1}\".\n"
"Create this folder, move the file, and continue?"
-msgstr ""
-"A \"{0}\" file-nak a(z) {1} mappán belül kell lennie.\n"
-"Mi legyen?\n"
-"Mappa létrehozása, file mozgatása és folytatás?"
+msgstr ""
+"A \"{0}\" file-nak a(z) {1} mappán belül kell lennie.\n"
+"Mi legyen?\n"
+"Mappa létrehozása, file mozgatása és folytatás?"
#: Editor.java:2109
msgid "Moving"
-msgstr "Átmozgatás"
+msgstr "Átmozgatás"
#: Editor.java:2120 Editor.java:2131 Editor.java:2141 Editor.java:2159
#: Sketch.java:479 Sketch.java:485 Sketch.java:500 Sketch.java:507
#: Sketch.java:530 Sketch.java:547 Base.java:1861 Preferences.java:240
msgid "Error"
-msgstr "Hiba"
+msgstr "Hiba"
#: Editor.java:2122
#, java-format
msgid "A folder named \"{0}\" already exists. Can't open sketch."
-msgstr "A {0} mappa már létezik. Sketch nem nyitható meg."
+msgstr "A {0} mappa már létezik. Sketch nem nyitható meg."
#: Editor.java:2132
msgid "Could not create the sketch folder."
-msgstr "Sketch mappája nem hozható létre."
+msgstr "Sketch mappája nem hozható létre."
#: Editor.java:2141
msgid "Could not copy to a proper location."
-msgstr "Nem másolható a megfelelő helyre."
+msgstr "Nem másolható a megfelelő helyre."
#: Editor.java:2159
msgid "Could not create the sketch."
-msgstr "Sketch nem hozható létre."
+msgstr "Sketch nem hozható létre."
#: Editor.java:2166
#, java-format
msgid "{0} | Arduino {1}"
-msgstr "{0} | Arduino {1}"
+msgstr "{0} | Arduino {1}"
#: Editor.java:2223 Editor.java:2261
msgid "Saving..."
-msgstr "Mentés..."
+msgstr "Mentés..."
#: Editor.java:2228 Editor.java:2264
msgid "Done Saving."
-msgstr "Mentés kész."
+msgstr "Mentés kész."
#: Editor.java:2270
msgid "Save Canceled."
-msgstr "Mentés megszakítva."
+msgstr "Mentés megszakítva."
#: Editor.java:2296
#, java-format
msgid ""
"Serial port {0} not found.\n"
"Retry the upload with another serial port?"
-msgstr ""
-"{0} soros port nem található.\n"
-"Másik soros porton megismételjük?"
+msgstr ""
+"{0} soros port nem található.\n"
+"Másik soros porton megismételjük?"
#: Editor.java:2331
msgid "Uploading to I/O Board..."
-msgstr "Feltöltés alappanelre..."
+msgstr "Feltöltés alappanelre..."
#: Editor.java:2348 Editor.java:2384
msgid "Done uploading."
-msgstr "Feltöltés kész."
+msgstr "Feltöltés kész."
#: Editor.java:2356 Editor.java:2392
msgid "Upload canceled."
-msgstr "Feltöltés megszakítva."
+msgstr "Feltöltés megszakítva."
#: Editor.java:2420
msgid "Save changes before export?"
-msgstr "Exportálás előtt mentés?"
+msgstr "Exportálás előtt mentés?"
#: Editor.java:2435
msgid "Export canceled, changes must first be saved."
-msgstr "Exportálás megszakítva. Először menteni kell!"
+msgstr "Exportálás megszakítva. Először menteni kell!"
#: Editor.java:2457
msgid "Burning bootloader to I/O Board (this may take a minute)..."
-msgstr "Bootloader égetése (néhány percet vesz igénybe)..."
+msgstr "Bootloader égetése (néhány percet vesz igénybe)..."
#: Editor.java:2463
msgid "Done burning bootloader."
-msgstr "Bootloader égetés kész."
+msgstr "Bootloader égetés kész."
#: Editor.java:2465 Editor.java:2469 Editor.java:2473
msgid "Error while burning bootloader."
-msgstr "Hiba lépett fel a bootloader égetésekor."
+msgstr "Hiba lépett fel a bootloader égetésekor."
#: Editor.java:2500
msgid "Printing..."
-msgstr "Nyomtatás..."
+msgstr "Nyomtatás..."
#: Editor.java:2517
msgid "Done printing."
-msgstr "Nyomtatás kész."
+msgstr "Nyomtatás kész."
#: Editor.java:2520
msgid "Error while printing."
-msgstr "Hiba a nyomtatás során."
+msgstr "Hiba a nyomtatás során."
#: Editor.java:2524
msgid "Printing canceled."
-msgstr "Nyomtatás megszakítva."
+msgstr "Nyomtatás megszakítva."
#: Editor.java:2572
#, java-format
msgid "Bad error line: {0}"
-msgstr "Hibás sor: {0}"
+msgstr "Hibás sor: {0}"
#: Editor.java:2641
msgid "Open URL"
-msgstr "URL megnyitása"
+msgstr "URL megnyitása"
#: UpdateCheck.java:53
msgid "http://www.arduino.cc/latest.txt"
-msgstr "http://www.arduino.cc/latest.txt"
+msgstr "http://www.arduino.cc/latest.txt"
#: UpdateCheck.java:103
msgid ""
"A new version of Arduino is available,\n"
"would you like to visit the Arduino download page?"
-msgstr ""
-"Új kiadás jelent meg Arduino-ból,\n"
-"megmutassam a letöltési oldalt?"
+msgstr ""
+"Új kiadás jelent meg Arduino-ból,\n"
+"megmutassam a letöltési oldalt?"
#: UpdateCheck.java:108 Preferences.java:76
msgid "Yes"
-msgstr "Igen"
+msgstr "Igen"
#: UpdateCheck.java:108 Preferences.java:77
msgid "No"
-msgstr "Nem"
+msgstr "Nem"
#: UpdateCheck.java:111
msgid "Update"
-msgstr "Frissítés"
+msgstr "Frissítés"
#: UpdateCheck.java:118
msgid "http://www.arduino.cc/en/Main/Software"
-msgstr "http://www.arduino.cc/en/Main/Software"
+msgstr "http://www.arduino.cc/en/Main/Software"
#: FindReplace.java:80
msgid "Find:"
-msgstr "Keresés:"
+msgstr "Keresés:"
#: FindReplace.java:81
msgid "Replace with:"
-msgstr "Csere erre:"
+msgstr "Csere erre:"
#: FindReplace.java:96
msgid "Ignore Case"
-msgstr "Kisbetű-nagybetű független"
+msgstr "Kisbetű-nagybetű független"
#: FindReplace.java:105
msgid "Wrap Around"
-msgstr "Teljesen szövegben"
+msgstr "Teljesen szövegben"
#: FindReplace.java:120 FindReplace.java:131
msgid "Replace All"
-msgstr "Mindent cserél"
+msgstr "Mindent cserél"
#: FindReplace.java:121 FindReplace.java:130 Sketch.java:1050
msgid "Replace"
-msgstr "Cserél"
+msgstr "Cserél"
#: FindReplace.java:122 FindReplace.java:129
msgid "Replace & Find"
-msgstr "Keres és cserél"
+msgstr "Keres és cserél"
#: FindReplace.java:123 FindReplace.java:128
msgid "Previous"
-msgstr "Előző"
+msgstr "Előző"
#: FindReplace.java:124 FindReplace.java:127
msgid "Find"
-msgstr "Keres"
+msgstr "Keres"
#: SerialMonitor.java:93
msgid "Send"
-msgstr "Küld"
+msgstr "Küld"
#: SerialMonitor.java:110
msgid "Autoscroll"
-msgstr "Autogörgetés"
+msgstr "Autogörgetés"
#: SerialMonitor.java:112
msgid "No line ending"
-msgstr "Nincs sorlezárás"
+msgstr "Nincs sorlezárás"
#: SerialMonitor.java:112
msgid "Newline"
-msgstr "Soremelés"
+msgstr "Soremelés"
#: SerialMonitor.java:112
msgid "Carriage return"
-msgstr "Kocsi-vissza"
+msgstr "Kocsi-vissza"
#: SerialMonitor.java:112
msgid "Both NL & CR"
-msgstr "Soremelés és Kocsi-vissza"
+msgstr "Soremelés és Kocsi-vissza"
#: SerialMonitor.java:130 SerialMonitor.java:133
msgid " baud"
-msgstr " baud"
+msgstr " baud"
#: Serial.java:147
#, java-format
msgid ""
"Serial port ''{0}'' already in use. Try quiting any programs that may be "
"using it."
-msgstr ""
-"A {0} soros port használatban van. A programból való"
-"kilépés után próbálja újra."
+msgstr ""
+"A {0} soros port használatban van. A programból való"
+"kilépés után próbálja újra."
#: Serial.java:154
#, java-format
msgid "Error opening serial port ''{0}''."
-msgstr "Hiba a {0} soros port megnyitása során."
+msgstr "Hiba a {0} soros port megnyitása során."
#: Serial.java:167
#, java-format
msgid ""
"Serial port ''{0}'' not found. Did you select the right one from the Tools > "
"Serial Port menu?"
-msgstr ""
-"A {0} soros port nem található. Választani az Eszközök > "
-"Soros port alatt lehetséges."
+msgstr ""
+"A {0} soros port nem található. Választani az Eszközök > "
+"Soros port alatt lehetséges."
#: Serial.java:424
#, java-format
msgid ""
"readBytesUntil() byte buffer is too small for the {0} bytes up to and "
"including char {1}"
-msgstr ""
-"readBytesUntil() byte buffer túl kicsi {0} byte befogadására "
-"és ideértve a {1} karaktert"
+msgstr ""
+"readBytesUntil() byte buffer túl kicsi {0} byte befogadására "
+"és ideértve a {1} karaktert"
#: Serial.java:567
#, java-format
msgid "Error inside Serial.{0}()"
-msgstr "Hiba a Serial.{0}()-ban"
+msgstr "Hiba a Serial.{0}()-ban"
#: tools/AutoFormat.java:91
msgid "Auto Format"
-msgstr "Autoformázás"
+msgstr "Autoformázás"
#: tools/AutoFormat.java:913 tools/format/src/AutoFormat.java:54
msgid "No changes necessary for Auto Format."
-msgstr "Nem szükséges semmilyen változtatás autoformázáshoz."
+msgstr "Nem szükséges semmilyen változtatás autoformázáshoz."
#: tools/AutoFormat.java:919
msgid "Auto Format Canceled: Too many right parentheses."
-msgstr "Autoformázás megszakítva: túl sok a záró zárójel."
+msgstr "Autoformázás megszakítva: túl sok a záró zárójel."
#: tools/AutoFormat.java:922
msgid "Auto Format Canceled: Too many left parentheses."
-msgstr "Autoformázás megszakítva: túl sok a nyitó zárójel."
+msgstr "Autoformázás megszakítva: túl sok a nyitó zárójel."
#: tools/AutoFormat.java:928
msgid "Auto Format Canceled: Too many right curly braces."
-msgstr "Autoformázás megszakítva: túl sok záró kapcsos-zárójel."
+msgstr "Autoformázás megszakítva: túl sok záró kapcsos-zárójel."
#: tools/AutoFormat.java:931
msgid "Auto Format Canceled: Too many left curly braces."
-msgstr "Autoformázás megszakítva: túl sok nyitó kapcsos-zárójel."
+msgstr "Autoformázás megszakítva: túl sok nyitó kapcsos-zárójel."
#: tools/AutoFormat.java:941
msgid "Auto Format finished."
-msgstr "Autoformázás befejeződött."
+msgstr "Autoformázás befejeződött."
#: tools/FixEncoding.java:41 tools/FixEncoding.java:58
#: tools/FixEncoding.java:79
msgid "Fix Encoding & Reload"
-msgstr "Betöltéskor autoformázás"
+msgstr "Betöltéskor autoformázás"
#: tools/FixEncoding.java:57
msgid "Discard all changes and reload sketch?"
-msgstr "Módosítások elvetése és Sketch újratöltése?"
+msgstr "Módosítások elvetése és Sketch újratöltése?"
#: tools/FixEncoding.java:77
msgid ""
"An error occurred while trying to fix the file encoding.\n"
"Do not attempt to save this sketch as it may overwrite\n"
"the old version. Use Open to re-open the sketch and try again.\n"
-msgstr ""
-"Hiba lépett fel a file fixálása/javítása során.\n"
-"Nem javasolt a felülírásos mentés.\n"
-"A Sketch újra-megnyitása talán megoldja a problémát.\n"
+msgstr ""
+"Hiba lépett fel a file fixálása/javítása során.\n"
+"Nem javasolt a felülírásos mentés.\n"
+"A Sketch újra-megnyitása talán megoldja a problémát.\n"
#: tools/Archiver.java:48
msgid "Archive Sketch"
-msgstr "Sketch archiválás"
+msgstr "Sketch archiválás"
#: tools/Archiver.java:59
msgid "yyMMdd"
-msgstr "yyMMdd"
+msgstr "yyMMdd"
#: tools/Archiver.java:74
msgid "Couldn't archive sketch"
-msgstr "Sketch nem archiválható"
+msgstr "Sketch nem archiválható"
#: tools/Archiver.java:75
msgid ""
"Archiving the sketch has been canceled because\n"
"the sketch couldn't save properly."
-msgstr ""
-"A Sketch archiválása megszakadt, mivel\n"
-"a Sketch pontos mentése nem volt lehetséges."
+msgstr ""
+"A Sketch archiválása megszakadt, mivel\n"
+"a Sketch pontos mentése nem volt lehetséges."
#: tools/Archiver.java:109
msgid "Archive sketch as:"
-msgstr "Sketch archiválása, mint:"
+msgstr "Sketch archiválása, mint:"
#: tools/Archiver.java:139
msgid "Archive sketch canceled."
-msgstr "Sketch archiválás megszakítva."
+msgstr "Sketch archiválás megszakítva."
#: SketchCode.java:83
#, java-format
msgid "Error while loading code {0}"
-msgstr "Hiba a kód betöltése közben: {0}"
+msgstr "Hiba a kód betöltése közben: {0}"
#: SketchCode.java:258
#, java-format
@@ -648,153 +648,153 @@ msgid ""
"older version of Processing,you may need to use Tools -> Fix Encoding & "
"Reload to updatethe sketch to use UTF-8 encoding. If not, you may need "
"todelete the bad characters to get rid of this warning."
-msgstr ""
-"A {0} nem felismerhető karaktert tartalmaz. Ha a kód régebbi verziójú "
-"Processing-gel készült, akkor az Eszközök -> Betöltéskor autoformázás "
-"menüpont megoldja az UTF-8 kódolást. Ha mégsem, akkor a hibás karaktert "
-"ki kell törölni az állományból."
+msgstr ""
+"A {0} nem felismerhető karaktert tartalmaz. Ha a kód régebbi verziójú "
+"Processing-gel készült, akkor az Eszközök -> Betöltéskor autoformázás "
+"menüpont megoldja az UTF-8 kódolást. Ha mégsem, akkor a hibás karaktert "
+"ki kell törölni az állományból."
#: Sketch.java:278 Sketch.java:307 Sketch.java:581 Sketch.java:970
msgid "Sketch is Read-Only"
-msgstr "Sketch csak olvasható"
+msgstr "Sketch csak olvasható"
#: Sketch.java:279 Sketch.java:308 Sketch.java:582 Sketch.java:971
msgid ""
"Some files are marked \"read-only\", so you'll\n"
"need to re-save the sketch in another location,\n"
"and try again."
-msgstr ""
-"Néhány file csak olvasható, így más helyre mentés után\n"
-"újra meg kell próbálni.\n"
-"\n"
+msgstr ""
+"Néhány file csak olvasható, így más helyre mentés után\n"
+"újra meg kell próbálni.\n"
+"\n"
#: Sketch.java:286
msgid "Name for new file:"
-msgstr "Új file neve:"
+msgstr "Új file neve:"
#: Sketch.java:298
msgid "Sketch is Untitled"
-msgstr "A Sketch most Névtelen (Untitled)"
+msgstr "A Sketch most Névtelen (Untitled)"
#: Sketch.java:299
msgid ""
"How about saving the sketch first \n"
"before trying to rename it?"
-msgstr ""
-"A Sketch csak mentés után\n"
-"nevezhető át!"
+msgstr ""
+"A Sketch csak mentés után\n"
+"nevezhető át!"
#: Sketch.java:359 Sketch.java:366 Sketch.java:377
msgid "Problem with rename"
-msgstr "Hiba az átnevezés során"
+msgstr "Hiba az átnevezés során"
#: Sketch.java:360
msgid "The name cannot start with a period."
-msgstr "A név nem kezdődhet periódus-jellel."
+msgstr "A név nem kezdődhet periódus-jellel."
#: Sketch.java:368
#, java-format
msgid "\".{0}\" is not a valid extension."
-msgstr "\".{0}\" nem megfelelő kiterjesztés."
+msgstr "\".{0}\" nem megfelelő kiterjesztés."
#: Sketch.java:378
msgid ""
"The main file can't use an extension.\n"
"(It may be time for your to graduate to a\n"
"\"real\" programming environment)"
-msgstr ""
-"A fő-file nem tartalmazhat kiterjesztést.\n"
-"(Talán itt az idő, hogy megismerje a\n"
-"\"valódi\" programozási környezetet)"
+msgstr ""
+"A fő-file nem tartalmazhat kiterjesztést.\n"
+"(Talán itt az idő, hogy megismerje a\n"
+"\"valódi\" programozási környezetet)"
#: Sketch.java:400 Sketch.java:414 Sketch.java:423 Sketch.java:863
msgid "Nope"
-msgstr "Dehogy, nem"
+msgstr "Dehogy, nem"
#: Sketch.java:402
#, java-format
msgid "A file named \"{0}\" already exists in \"{1}\""
-msgstr "A \"{0}\" file már létezik a \"{1}\" mappában!"
+msgstr "A \"{0}\" file már létezik a \"{1}\" mappában!"
#: Sketch.java:415
msgid "You can't have a .cpp file with the same name as the sketch."
-msgstr "Nem lehet azonos néven a .cpp állomány, mint a Sketch."
+msgstr "Nem lehet azonos néven a .cpp állomány, mint a Sketch."
#: Sketch.java:425
msgid ""
"You can't rename the sketch to \"{0}\"\n"
"because the sketch already has a .cpp file with that name."
-msgstr ""
-"Nem nevezhető át a Sketch, mert létezik a \"{0}\"\n"
-"nevű .cpp állomány."
+msgstr ""
+"Nem nevezhető át a Sketch, mert létezik a \"{0}\"\n"
+"nevű .cpp állomány."
#: Sketch.java:459
msgid "Cannot Rename"
-msgstr "Átnevezési hiba"
+msgstr "Átnevezési hiba"
#: Sketch.java:461
#, java-format
msgid "Sorry, a sketch (or folder) named \"{0}\" already exists."
-msgstr "Hiba: Sketch (vagy mappa) már létezik \"{0}\" néven."
+msgstr "Hiba: Sketch (vagy mappa) már létezik \"{0}\" néven."
#: Sketch.java:479
msgid "Could not rename the sketch. (0)"
-msgstr "A Sketch nem nevezhető át: (0)."
+msgstr "A Sketch nem nevezhető át: (0)."
#: Sketch.java:487 Sketch.java:532
#, java-format
msgid "Could not rename \"{0}\" to \"{1}\""
-msgstr "Nem nevezhető át: \"{0}\" -> \"{1}\""
+msgstr "Nem nevezhető át: \"{0}\" -> \"{1}\""
#: Sketch.java:500
msgid "Could not rename the sketch. (1)"
-msgstr "Nem nevezhető át a Sketch: (1)"
+msgstr "Nem nevezhető át a Sketch: (1)"
#: Sketch.java:507
msgid "Could not rename the sketch. (2)"
-msgstr "Nem nevezhető át a Sketch: (2)."
+msgstr "Nem nevezhető át a Sketch: (2)."
#: Sketch.java:544
msgid "createNewFile() returned false"
-msgstr "a createNewFile() hibát jelzett"
+msgstr "a createNewFile() hibát jelzett"
#: Sketch.java:591
msgid "Are you sure you want to delete this sketch?"
-msgstr "Tényleg törölni kell a Sketch-et? Biztosan?"
+msgstr "Tényleg törölni kell a Sketch-et? Biztosan?"
#: Sketch.java:592
#, java-format
msgid "Are you sure you want to delete \"{0}\"?"
-msgstr "A(z) \"{0}\" állomány tényleg törlésre kerüljön?"
+msgstr "A(z) \"{0}\" állomány tényleg törlésre kerüljön?"
#: Sketch.java:595 EditorHeader.java:314
msgid "Delete"
-msgstr "Törlés"
+msgstr "Törlés"
#: Sketch.java:620
msgid "Couldn't do it"
-msgstr "Nem tudom megtenni"
+msgstr "Nem tudom megtenni"
#: Sketch.java:621
#, java-format
msgid "Could not delete \"{0}\"."
-msgstr "Nem törölhető file: \"{0}\"."
+msgstr "Nem törölhető file: \"{0}\"."
#: Sketch.java:651
msgid "removeCode: internal error.. could not find code"
-msgstr "removeCode: belső hiba... Kód nem található"
+msgstr "removeCode: belső hiba... Kód nem található"
#: Sketch.java:724
msgid "Sketch is read-only"
-msgstr "A Sketch csak olvasható"
+msgstr "A Sketch csak olvasható"
#: Sketch.java:725
msgid ""
"Some files are marked \"read-only\", so you'll\n"
"need to re-save this sketch to another location."
-msgstr ""
-"Néhány file csak olvasható, így el kell menteni a\n"
-"Sketch-et egy másik mappába."
+msgstr ""
+"Néhány file csak olvasható, így el kell menteni a\n"
+"Sketch-et egy másik mappába."
#: Sketch.java:743
msgid ""
@@ -805,215 +805,215 @@ msgid ""
"disable this in the Preferences dialog.\n"
"\n"
"Save sketch and update its extension?"
-msgstr ""
-"Az Arduino 1.0-ban az alappértelmezett kiterjesztés megváltozott\n"
-".pde-ről .ino-ra. Az új Sketck-ek (ideértve a Mentés másként... létrehozottakat is)\n"
-"már az új kiterjesztést használják. A mentés\n"
-"közbeni átnevezés tiltható a Beállítások menüpontban.\n"
-"\n"
-"Sketch mentése és kiterjesztés frissítése?"
+msgstr ""
+"Az Arduino 1.0-ban az alappértelmezett kiterjesztés megváltozott\n"
+".pde-ről .ino-ra. Az új Sketck-ek (ideértve a Mentés másként... létrehozottakat is)\n"
+"már az új kiterjesztést használják. A mentés\n"
+"közbeni átnevezés tiltható a Beállítások menüpontban.\n"
+"\n"
+"Sketch mentése és kiterjesztés frissítése?"
#: Sketch.java:750
msgid ".pde -> .ino"
-msgstr ".pde -> .ino"
+msgstr ".pde -> .ino"
#: Sketch.java:829
msgid "Save sketch folder as..."
-msgstr "Sketch mentése, mint..."
+msgstr "Sketch mentése, mint..."
#: Sketch.java:865
msgid ""
"You can't save the sketch as \"{0}\"\n"
"because the sketch already has a .cpp file with that name."
-msgstr ""
-"Sketch nem menthető, mint \"{0}\"\n"
-"mert már van ilyen .cpp állomány."
+msgstr ""
+"Sketch nem menthető, mint \"{0}\"\n"
+"mert már van ilyen .cpp állomány."
#: Sketch.java:886
msgid "How very Borges of you"
-msgstr "Nono!"
+msgstr "Nono!"
#: Sketch.java:887
msgid ""
"You cannot save the sketch into a folder\n"
"inside itself. This would go on forever."
-msgstr ""
-"Sketch nem menthető a mappába.\n"
-"Így egy végtelen történetté alakulna."
+msgstr ""
+"Sketch nem menthető a mappába.\n"
+"Így egy végtelen történetté alakulna."
#: Sketch.java:979
msgid "Select an image or other data file to copy to your sketch"
-msgstr "Kép vagy egyéb adat választása a Sketch-be másoláshoz"
+msgstr "Kép vagy egyéb adat választása a Sketch-be másoláshoz"
#: Sketch.java:1047
#, java-format
msgid "Replace the existing version of {0}?"
-msgstr "A meglevő {0} cseréje?"
+msgstr "A meglevő {0} cseréje?"
#: Sketch.java:1069 Sketch.java:1092
msgid "Error adding file"
-msgstr "File hozzáadási hiba"
+msgstr "File hozzáadási hiba"
#: Sketch.java:1070
#, java-format
msgid "Could not delete the existing ''{0}'' file."
-msgstr "Nem törölhető a meglevő {0} file."
+msgstr "Nem törölhető a meglevő {0} file."
#: Sketch.java:1078
msgid "You can't fool me"
-msgstr "Ne bolondozzon velem"
+msgstr "Ne bolondozzon velem"
#: Sketch.java:1079
msgid ""
"This file has already been copied to the\n"
"location from which where you're trying to add it.\n"
"I ain't not doin nuthin'."
-msgstr ""
-"A file már másolásra került a mappába\n"
-"ahonnan hozzá próbálta adni.\n"
-"Még mindig nem végrehajtható."
+msgstr ""
+"A file már másolásra került a mappába\n"
+"ahonnan hozzá próbálta adni.\n"
+"Még mindig nem végrehajtható."
#: Sketch.java:1093
#, java-format
msgid "Could not add ''{0}'' to the sketch."
-msgstr "A {0} nem adható hozzá a Sketch-hez."
+msgstr "A {0} nem adható hozzá a Sketch-hez."
#: Sketch.java:1393 Sketch.java:1424
msgid "Build folder disappeared or could not be written"
-msgstr "A fordítási mappa elérhetetlen vagy írásvédett."
+msgstr "A fordítási mappa elérhetetlen vagy írásvédett."
#: Sketch.java:1408
msgid "Could not find main class"
-msgstr "A fő programosztály (main class) nem található"
+msgstr "A fő programosztály (main class) nem található"
#: Sketch.java:1433
#, java-format
msgid "Uncaught exception type: {0}"
-msgstr "Hibás kivétel típus: {0}"
+msgstr "Hibás kivétel típus: {0}"
#: Sketch.java:1465
#, java-format
msgid "Problem moving {0} to the build folder"
-msgstr "Hiba a {0} fordítási mappába mozgatása során"
+msgstr "Hiba a {0} fordítási mappába mozgatása során"
#: Sketch.java:1661
msgid "Uploading..."
-msgstr "Feltöltés..."
+msgstr "Feltöltés..."
#: Sketch.java:1684
#, java-format
msgid "Binary sketch size: {0} bytes (of a {1} byte maximum)"
-msgstr "Sketch mérete: {0} byte (maximálisan lehetséges: {1} byte)"
+msgstr "Sketch mérete: {0} byte (maximálisan lehetséges: {1} byte)"
#: Sketch.java:1689
msgid "Couldn't determine program size: {0}"
-msgstr "Nem meghatározható a {0} program mérete"
+msgstr "Nem meghatározható a {0} program mérete"
#: Sketch.java:1694
msgid ""
"Sketch too big; see http://www.arduino.cc/en/Guide/Troubleshooting#size for "
"tips on reducing it."
-msgstr "Túl nagy a Sketch: méret csökkentéséhez a http://www.arduino.cc/en/Guide/Troubleshooting#size oldalon találhatóak tippek."
+msgstr "Túl nagy a Sketch: méret csökkentéséhez a http://www.arduino.cc/en/Guide/Troubleshooting#size oldalon találhatóak tippek."
#: Sketch.java:1754
msgid "Missing the */ from the end of a /* comment */"
-msgstr "Hiányzik a megjegyzést záró */ jel"
+msgstr "Hiányzik a megjegyzést záró */ jel"
#: Sketch.java:1796
msgid "Sketch Disappeared"
-msgstr "A Sketch elveszett"
+msgstr "A Sketch elveszett"
#: Sketch.java:1797
msgid ""
"The sketch folder has disappeared.\n"
" Will attempt to re-save in the same location,\n"
"but anything besides the code will be lost."
-msgstr ""
-"A Sketch mappája elveszett.\n"
-"A Sketch újramentésre kerül,\n"
-"a kód egyes részei megsemmisülhettek."
+msgstr ""
+"A Sketch mappája elveszett.\n"
+"A Sketch újramentésre kerül,\n"
+"a kód egyes részei megsemmisülhettek."
#: Sketch.java:1810
msgid "Could not re-save sketch"
-msgstr "Nem lehetséges a Sketch újramentése"
+msgstr "Nem lehetséges a Sketch újramentése"
#: Sketch.java:1811
msgid ""
"Could not properly re-save the sketch. You may be in trouble at this point,\n"
"and it might be time to copy and paste your code to another text editor."
-msgstr ""
-"Tökéletesen nem lehetséges a Sketch újramentése. A megoldás jelen helyzetben, hogy\n"
-"a szerkesztőből a kódot kimásolja egy másik szerkesztőprogramba."
+msgstr ""
+"Tökéletesen nem lehetséges a Sketch újramentése. A megoldás jelen helyzetben, hogy\n"
+"a szerkesztőből a kódot kimásolja egy másik szerkesztőprogramba."
#: Sketch.java:2060
msgid ""
"The sketch name had to be modified. Sketch names can only consist\n"
"of ASCII characters and numbers (but cannot start with a number).\n"
"They should also be less less than 64 characters long."
-msgstr ""
-"A Sketch neve módosításra került. Az elnevezése csak\n"
-"ASCII betűket, számokat tartalmazhat (de nem kezdődhet számmal).\n"
-"Valamint a név hossza nem haladhatja meg a 64 karaktert."
+msgstr ""
+"A Sketch neve módosításra került. Az elnevezése csak\n"
+"ASCII betűket, számokat tartalmazhat (de nem kezdődhet számmal).\n"
+"Valamint a név hossza nem haladhatja meg a 64 karaktert."
#: debug/Uploader.java:52
msgid "https://developer.berlios.de/bugs/?group_id=3590"
-msgstr "https://developer.berlios.de/bugs/?group_id=3590"
+msgstr "https://developer.berlios.de/bugs/?group_id=3590"
#: debug/Uploader.java:54 debug/Compiler.java:43
#, java-format
msgid "Compiler error, please submit this code to {0}"
-msgstr "Fordítási hiba, ezt a kódot kérem küldje el a {0} címre"
+msgstr "Fordítási hiba, ezt a kódot kérem küldje el a {0} címre"
#: debug/Uploader.java:199
#, java-format
msgid ""
"the selected serial port {0} does not exist or your board is not connected"
-msgstr "kiválasztott {0} port nem elérhető vagy az alappanel nincs csatlakoztatva"
+msgstr "kiválasztott {0} port nem elérhető vagy az alappanel nincs csatlakoztatva"
#: debug/Uploader.java:203
msgid ""
"Device is not responding, check the right serial port is selected or RESET "
"the board right before exporting"
-msgstr ""
-"Eszköz nem válaszol: talán hibás port lett kiválasztva, vagy a panel"
-"újraindítása szükséges exportálás előtt"
+msgstr ""
+"Eszköz nem válaszol: talán hibás port lett kiválasztva, vagy a panel"
+"újraindítása szükséges exportálás előtt"
#: debug/Uploader.java:209
msgid ""
"Problem uploading to board. See http://www.arduino.cc/en/Guide/"
"Troubleshooting#upload for suggestions."
-msgstr ""
-"Hiba a feltöltés során. A hiba elhárítása a "
-"http://www.arduino.cc/en/Guide/%20oldalon%20a%20Troubleshooting#upload%20alatt%20ker%C3%BClt%20le%C3%ADr%C3%A1sra."
+msgstr ""
+"Hiba a feltöltés során. A hiba elhárítása a "
+"http://www.arduino.cc/en/Guide/%20oldalon%20a%20Troubleshooting#upload%20alatt%20ker%C3%BClt%20le%C3%ADr%C3%A1sra."
#: debug/Uploader.java:213
msgid ""
"Wrong microcontroller found. Did you select the right board from the Tools "
"> Board menu?"
-msgstr ""
-"Nem megfelelő mikrokontroller lett kiválasztva. Pontosítani az Eszközök "
-"> Alappanelek menüben lehet."
+msgstr ""
+"Nem megfelelő mikrokontroller lett kiválasztva. Pontosítani az Eszközök "
+"> Alappanelek menüben lehet."
#: debug/Compiler.java:41
msgid "http://code.google.com/p/arduino/issues/list"
-msgstr "http://code.google.com/p/arduino/issues/list"
+msgstr "http://code.google.com/p/arduino/issues/list"
#: debug/Compiler.java:79
msgid "No board selected; please choose a board from the Tools > Board menu."
-msgstr "Nincs alappanel kiválasztva. Választani az Eszközök > Alappanel menüből lehet."
+msgstr "Nincs alappanel kiválasztva. Választani az Eszközök > Alappanel menüből lehet."
#: debug/Compiler.java:422
#, java-format
msgid "{0} returned {1}"
-msgstr "{0} eredménye {1}"
+msgstr "{0} eredménye {1}"
#: debug/Compiler.java:426
msgid "Error compiling."
-msgstr "Hiba a fordítás során."
+msgstr "Hiba a fordítás során."
#: debug/Compiler.java:465
msgid "Please import the SPI library from the Sketch > Import Library menu."
-msgstr "Az SPI függvények használatához a Sketch > Függvény import alatt az SPI-re van szüksége."
+msgstr "Az SPI függvények használatához a Sketch > Függvény import alatt az SPI-re van szüksége."
#: debug/Compiler.java:466
msgid ""
@@ -1022,15 +1022,15 @@ msgid ""
"You appear to be using it or another library that depends on the SPI "
"library.\n"
"\n"
-msgstr ""
-"\n"
-"Az Arduino-0019 óta az Ethernet függvények kapcsolódnak az SPI függvényekhez.\n"
-"Ez így használható, vagy másik függvény alkalmazható az SPI kezelésére.\n"
-"\n"
+msgstr ""
+"\n"
+"Az Arduino-0019 óta az Ethernet függvények kapcsolódnak az SPI függvényekhez.\n"
+"Ez így használható, vagy másik függvény alkalmazható az SPI kezelésére.\n"
+"\n"
#: debug/Compiler.java:471
msgid "The 'BYTE' keyword is no longer supported."
-msgstr "A 'BYTE' kulcsszó nem támogatott."
+msgstr "A 'BYTE' kulcsszó nem támogatott."
#: debug/Compiler.java:472
msgid ""
@@ -1038,15 +1038,15 @@ msgid ""
"As of Arduino 1.0, the 'BYTE' keyword is no longer supported.\n"
"Please use Serial.write() instead.\n"
"\n"
-msgstr ""
-"\n"
-"Az Arduino 1.0 alatt a 'BYTE' kulcsszó nem támogatott.\n"
-"Helyette a Serial.write() használható.\n"
-"\n"
+msgstr ""
+"\n"
+"Az Arduino 1.0 alatt a 'BYTE' kulcsszó nem támogatott.\n"
+"Helyette a Serial.write() használható.\n"
+"\n"
#: debug/Compiler.java:477
msgid "The Server class has been renamed EthernetServer."
-msgstr "A Server függvényosztály EthernetServer névre hallgat."
+msgstr "A Server függvényosztály EthernetServer névre hallgat."
#: debug/Compiler.java:478
msgid ""
@@ -1054,14 +1054,14 @@ msgid ""
"As of Arduino 1.0, the Server class in the Ethernet library has been renamed "
"to EthernetServer.\n"
"\n"
-msgstr ""
-"\n"
-"Az Arduino 1.0-ban, az Ethernet függvény Server osztálya EthernetServer-re változott.\n"
-"\n"
+msgstr ""
+"\n"
+"Az Arduino 1.0-ban, az Ethernet függvény Server osztálya EthernetServer-re változott.\n"
+"\n"
#: debug/Compiler.java:483
msgid "The Client class has been renamed EthernetClient."
-msgstr "A Client osztály új neve: EthernetClient"
+msgstr "A Client osztály új neve: EthernetClient"
#: debug/Compiler.java:484
msgid ""
@@ -1069,14 +1069,14 @@ msgid ""
"As of Arduino 1.0, the Client class in the Ethernet library has been renamed "
"to EthernetClient.\n"
"\n"
-msgstr ""
-"\n"
-"Az Arduino 1.0-ban az Ethernet függvény Client osztály új neve: EthernetClient.\n"
-"\n"
+msgstr ""
+"\n"
+"Az Arduino 1.0-ban az Ethernet függvény Client osztály új neve: EthernetClient.\n"
+"\n"
#: debug/Compiler.java:489
msgid "The Udp class has been renamed EthernetUdp."
-msgstr "Az Udp osztály új neve: EthernetUdp."
+msgstr "Az Udp osztály új neve: EthernetUdp."
#: debug/Compiler.java:490
msgid ""
@@ -1084,14 +1084,14 @@ msgid ""
"As of Arduino 1.0, the Udp class in the Ethernet library has been renamed to "
"EthernetClient.\n"
"\n"
-msgstr ""
-"\n"
-"Az Arduino 1.0-ban az Ethernet függvény Udp osztály új neve: EthernetUdp.\n"
-"\n"
+msgstr ""
+"\n"
+"Az Arduino 1.0-ban az Ethernet függvény Udp osztály új neve: EthernetUdp.\n"
+"\n"
#: debug/Compiler.java:495
msgid "Wire.send() has been renamed Wire.write()."
-msgstr "A Wire.send() új neve: Wire.write()."
+msgstr "A Wire.send() új neve: Wire.write()."
#: debug/Compiler.java:496
msgid ""
@@ -1099,14 +1099,14 @@ msgid ""
"As of Arduino 1.0, the Wire.send() function was renamed to Wire.write() for "
"consistency with other libraries.\n"
"\n"
-msgstr ""
-"\n"
-"Az Arduino 1.0-ban a Wire.send() funkció ún neve: Wire.write(), az egyéb függvényekkel analóg módon.\n"
-"\n"
+msgstr ""
+"\n"
+"Az Arduino 1.0-ban a Wire.send() funkció ún neve: Wire.write(), az egyéb függvényekkel analóg módon.\n"
+"\n"
#: debug/Compiler.java:501
msgid "Wire.receive() has been renamed Wire.read()."
-msgstr "A Wire.receive() új neve: Wire.read()."
+msgstr "A Wire.receive() új neve: Wire.read()."
#: debug/Compiler.java:502
msgid ""
@@ -1114,59 +1114,59 @@ msgid ""
"As of Arduino 1.0, the Wire.receive() function was renamed to Wire.read() "
"for consistency with other libraries.\n"
"\n"
-msgstr ""
-"\n"
-"Az Arduino 1.0-ban a Wire.receive() funkció ún neve: Wire.read(), az egyéb függvényekkel analóg módon.\n"
-"\n"
+msgstr ""
+"\n"
+"Az Arduino 1.0-ban a Wire.receive() funkció ún neve: Wire.read(), az egyéb függvényekkel analóg módon.\n"
+"\n"
#: EditorConsole.java:152
msgid "Console Error"
-msgstr "Konzol hiba"
+msgstr "Konzol hiba"
#: EditorConsole.java:153
msgid ""
"A problem occurred while trying to open the\n"
"files used to store the console output."
-msgstr ""
-"Hiba lépett fel, miközben a megnyitott file\n"
-"a konzolt használta volna."
+msgstr ""
+"Hiba lépett fel, miközben a megnyitott file\n"
+"a konzolt használta volna."
#: Base.java:184
msgid "Non-fatal error while setting the Look & Feel."
-msgstr "Nem-végzetes hiba a kinézet beállítása során (a program férfi géneket hordoz)."
+msgstr "Nem-végzetes hiba a kinézet beállítása során (a program férfi géneket hordoz)."
#: Base.java:185
msgid "The error message follows, however Arduino should run fine."
-msgstr "A hibaüzenetet követően az Arduino megfelelően működik."
+msgstr "A hibaüzenetet követően az Arduino megfelelően működik."
#: Base.java:220
msgid "Problem Setting the Platform"
-msgstr "A keretrendszer konfigurálása során hiba lépett fel"
+msgstr "A keretrendszer konfigurálása során hiba lépett fel"
#: Base.java:221
msgid ""
"An unknown error occurred while trying to load\n"
"platform-specific code for your machine."
-msgstr "Rendszerfüggő kód betöltése során\n "
-"hiba lépett fel (A hiba az Ön gépében van.)"
+msgstr "Rendszerfüggő kód betöltése során\n "
+"hiba lépett fel (A hiba az Ön gépében van.)"
#: Base.java:232
msgid "Please install JDK 1.5 or later"
-msgstr "A futtatáshoz telepített Java 1.5 vagy újabb szoftverkörnyezet szükséges"
+msgstr "A futtatáshoz telepített Java 1.5 vagy újabb szoftverkörnyezet szükséges"
#: Base.java:233
msgid ""
"Arduino requires a full JDK (not just a JRE)\n"
"to run. Please install JDK 1.5 or later.\n"
"More information can be found in the reference."
-msgstr "Az Arduino futtatásához teljes telepítésű JDK (Java Fejlesztői Környezet)"
-"szükséges, nem elegendő csak a JRE (Java futtatókörnyezet)"
-"A JDK 1.5 vagy újabb szofver telepítése szükséges"
-"Bővebb információ a Referenciák közt található."
+msgstr "Az Arduino futtatásához teljes telepítésű JDK (Java Fejlesztői Környezet)"
+"szükséges, nem elegendő csak a JRE (Java futtatókörnyezet)"
+"A JDK 1.5 vagy újabb szofver telepítése szükséges"
+"Bővebb információ a Referenciák közt található."
#: Base.java:257
msgid "Sketchbook folder disappeared"
-msgstr "A SketchBook mappa elérhetetlen"
+msgstr "A SketchBook mappa elérhetetlen"
#: Base.java:258
msgid ""
@@ -1175,59 +1175,59 @@ msgid ""
"location, and create a new sketchbook folder if\n"
"necessary. Arduino will then stop talking about\n"
"himself in the third person."
-msgstr "A SketchBook mappa nem érhető el.\n"
-"Az alapértelmezett hely lesz kiválasztva, és\n"
-"itt létrehozva a sketch mappa."
+msgstr "A SketchBook mappa nem érhető el.\n"
+"Az alapértelmezett hely lesz kiválasztva, és\n"
+"itt létrehozva a sketch mappa."
#: Base.java:532
msgid "Time for a Break"
-msgstr "Itt az idő szünetet tartani"
+msgstr "Itt az idő szünetet tartani"
#: Base.java:533
msgid ""
"You've reached the limit for auto naming of new sketches\n"
"for the day. How about going for a walk instead?"
-msgstr "Meghaladtad az egy napra jutó új Sketch-ek létrehozási\n "
-"számát. Nem kéne sétálni egyet - pihenésül?"
+msgstr "Meghaladtad az egy napra jutó új Sketch-ek létrehozási\n "
+"számát. Nem kéne sétálni egyet - pihenésül?"
#: Base.java:537
msgid "Sunshine"
-msgstr "Napfény"
+msgstr "Napfény"
#: Base.java:538
msgid "No really, time for some fresh air for you."
-msgstr "Hoppá, itt az idő levegőznöd egyet."
+msgstr "Hoppá, itt az idő levegőznöd egyet."
#: Base.java:633
msgid "Open an Arduino sketch..."
-msgstr "Arduino Sketch megnyitása..."
+msgstr "Arduino Sketch megnyitása..."
#: Base.java:772
msgid ""
"
Are you "
"sure you want to Quit?
Closing the last open sketch will quit Arduino."
-msgstr ""
-"
Biztosan ki akarsz lépni?
Az utolsó Sketch bezárásával az Arduino kilép."
+msgstr ""
+"
Biztosan ki akarsz lépni?
Az utolsó Sketch bezárásával az Arduino kilép."
#: Base.java:970
msgid "Contributed"
-msgstr "Hozzáadás"
+msgstr "Hozzáadás"
#: Base.java:1095
msgid "Sketch Does Not Exist"
-msgstr "Sketch nem megnyitható"
+msgstr "Sketch nem megnyitható"
#: Base.java:1096
msgid ""
"The selected sketch no longer exists.\n"
"You may need to restart Arduino to update\n"
"the sketchbook menu."
-msgstr ""
-"A kiválasztott Sketch nem érhető el.\n"
-"A SketchBook menü frissítéséhez az Arduino\n"
-"újraindítása szükséges."
+msgstr ""
+"A kiválasztott Sketch nem érhető el.\n"
+"A SketchBook menü frissítéséhez az Arduino\n"
+"újraindítása szükséges."
#: Base.java:1125
#, java-format
@@ -1237,16 +1237,16 @@ msgid ""
"(ASCII-only with no spaces, and it cannot start with a number).\n"
"To get rid of this message, remove the sketch from\n"
"{1}"
-msgstr ""
-"A \"{0}\" Sketch nem használható.\n"
-"A Sketch neve csak angol abc betűit, számokat\n"
-"tartalmazhat, szóköz nélkül és az első betűje nem lehet szám.\n"
-"A hibás Sketch-et távolítsd el\n"
-"a(z) {1} mappából!"
+msgstr ""
+"A \"{0}\" Sketch nem használható.\n"
+"A Sketch neve csak angol abc betűit, számokat\n"
+"tartalmazhat, szóköz nélkül és az első betűje nem lehet szám.\n"
+"A hibás Sketch-et távolítsd el\n"
+"a(z) {1} mappából!"
#: Base.java:1132
msgid "Ignoring sketch with bad name"
-msgstr "Hibás Sketch név kihagyása"
+msgstr "Hibás Sketch név kihagyása"
#: Base.java:1202
#, java-format
@@ -1254,193 +1254,193 @@ msgid ""
"The library \"{0}\" cannot be used.\n"
"Library names must contain only basic letters and numbers.\n"
"(ASCII only and no spaces, and it cannot start with a number)"
-msgstr ""
-"A \"{0}\" könyvtár nem használható.\n"
-"A neve az angol abc betűit és számokat tartalmazhat\n"
-"(szóköz nem lehet benne és nem kezdődhet számmal)."
+msgstr ""
+"A \"{0}\" könyvtár nem használható.\n"
+"A neve az angol abc betűit és számokat tartalmazhat\n"
+"(szóköz nem lehet benne és nem kezdődhet számmal)."
#: Base.java:1207
msgid "Ignoring bad library name"
-msgstr "Hibás könyvtárnév kihagyása"
+msgstr "Hibás könyvtárnév kihagyása"
#: Base.java:1432
msgid "Problem getting data folder"
-msgstr "Probléma a könyvtár elérésekor"
+msgstr "Probléma a könyvtár elérésekor"
#: Base.java:1433
msgid "Error getting the Arduino data folder."
-msgstr "Hiba az Arduino data könyvtár elérésekor."
+msgstr "Hiba az Arduino data könyvtár elérésekor."
#: Base.java:1440
msgid "Settings issues"
-msgstr "Kimenetek beállítása"
+msgstr "Kimenetek beállítása"
#: Base.java:1441
msgid ""
"Arduino cannot run because it could not\n"
"create a folder to store your settings."
-msgstr ""
-"Arduino nem futtatható, mert nem hozható létre\n"
-"a felhasználói beállítások mappája."
+msgstr ""
+"Arduino nem futtatható, mert nem hozható létre\n"
+"a felhasználói beállítások mappája."
#: Base.java:1602
msgid "You forgot your sketchbook"
-msgstr "Felejtsd el a SketchBook-ot"
+msgstr "Felejtsd el a SketchBook-ot"
#: Base.java:1603
msgid ""
"Arduino cannot run because it could not\n"
"create a folder to store your sketchbook."
-msgstr ""
-"Arduino nem futtatható, mert nem hozható létre\n"
-"a felhasználói Sketch mentések mappája."
+msgstr ""
+"Arduino nem futtatható, mert nem hozható létre\n"
+"a felhasználói Sketch mentések mappája."
#: Base.java:1623
msgid "Select (or create new) folder for sketches..."
-msgstr "Válassz (vagy hozz létre) mappát a Sketch-eknek..."
+msgstr "Válassz (vagy hozz létre) mappát a Sketch-eknek..."
#: Base.java:1647
msgid "Problem Opening URL"
-msgstr "Hiba az URL megnyitásakor"
+msgstr "Hiba az URL megnyitásakor"
#: Base.java:1648
#, java-format
msgid ""
"Could not open the URL\n"
"{0}"
-msgstr ""
-"Nem nyitható meg az URL:\n"
-"{0}"
+msgstr ""
+"Nem nyitható meg az URL:\n"
+"{0}"
#: Base.java:1671
msgid "Problem Opening Folder"
-msgstr "Hiba a mappa megnyitásakor"
+msgstr "Hiba a mappa megnyitásakor"
#: Base.java:1672
#, java-format
msgid ""
"Could not open the folder\n"
"{0}"
-msgstr ""
-"Nem nyitható meg a mappa:\n"
-"{0}"
+msgstr ""
+"Nem nyitható meg a mappa:\n"
+"{0}"
#: Base.java:1785
msgid "Guide_MacOSX.html"
-msgstr "Guide_MacOSX.html"
+msgstr "Guide_MacOSX.html"
#: Base.java:1787
msgid "Guide_Windows.html"
-msgstr "Guide_Windows.html"
+msgstr "Guide_Windows.html"
#: Base.java:1789
msgid "http://www.arduino.cc/playground/Learning/Linux"
-msgstr "http://www.arduino.cc/playground/Learning/Linux"
+msgstr "http://www.arduino.cc/playground/Learning/Linux"
#: Base.java:1794
msgid "index.html"
-msgstr "index.html"
+msgstr "index.html"
#: Base.java:1799
msgid "Guide_Environment.html"
-msgstr "Guide_Environment.html"
+msgstr "Guide_Environment.html"
#: Base.java:1804
msgid "environment"
-msgstr "környezet"
+msgstr "környezet"
#: Base.java:1804
msgid "platforms.html"
-msgstr "platforms.html"
+msgstr "platforms.html"
#: Base.java:1809
msgid "Guide_Troubleshooting.html"
-msgstr "Guide_Troubleshooting.html"
+msgstr "Guide_Troubleshooting.html"
#: Base.java:1814
msgid "FAQ.html"
-msgstr "FAQ.html"
+msgstr "FAQ.html"
#: Base.java:1826
msgid "Message"
-msgstr "Üzenet"
+msgstr "Üzenet"
#: Base.java:1842
msgid "Warning"
-msgstr "Figyelmeztetés"
+msgstr "Figyelmeztetés"
#: Base.java:2196
#, java-format
msgid "Could not remove old version of {0}"
-msgstr "Nem törölhető a {0} régi verziója"
+msgstr "Nem törölhető a {0} régi verziója"
#: Base.java:2206
#, java-format
msgid "Could not replace {0}"
-msgstr "Nem cserélhető: {0}"
+msgstr "Nem cserélhető: {0}"
#: Base.java:2247 Base.java:2270
#, java-format
msgid "Could not delete {0}"
-msgstr "Nem törölhető: {0}"
+msgstr "Nem törölhető: {0}"
#: EditorHeader.java:292
msgid "New Tab"
-msgstr "Új fül"
+msgstr "Új fül"
#: EditorHeader.java:300
msgid "Rename"
-msgstr "Átnevezés"
+msgstr "Átnevezés"
#: EditorHeader.java:326
msgid "Previous Tab"
-msgstr "Előző fül"
+msgstr "Előző fül"
#: EditorHeader.java:340
msgid "Next Tab"
-msgstr "Következő fül"
+msgstr "Következő fül"
#: EditorToolbar.java:41 EditorToolbar.java:46
msgid "Verify"
-msgstr "Ellenőrzés"
+msgstr "Ellenőrzés"
#: EditorToolbar.java:41
msgid "Open"
-msgstr "Megnyitás"
+msgstr "Megnyitás"
#: EditorToolbar.java:46
msgid "New Editor Window"
-msgstr "Új szerkesztőablak"
+msgstr "Új szerkesztőablak"
#: EditorToolbar.java:46
msgid "Open in Another Window"
-msgstr "Megnyitás új ablakban"
+msgstr "Megnyitás új ablakban"
#: Platform.java:167
msgid "No launcher available"
-msgstr "Nem indítható"
+msgstr "Nem indítható"
#: Platform.java:168
msgid ""
"Unspecified platform, no launcher available.\n"
"To enable opening URLs or folders, add a \n"
"\"launcher=/path/to/app\" line to preferences.txt"
-msgstr ""
-"Nem ismert platform, indítás nem lehetséges.\n"
-"Az URL vagy mappa megnyitásához a preferences.txt-ben a\n"
-"\"launcher=/path/to/app\" sor hozzáadása szükséges"
+msgstr ""
+"Nem ismert platform, indítás nem lehetséges.\n"
+"Az URL vagy mappa megnyitásához a preferences.txt-ben a\n"
+"\"launcher=/path/to/app\" sor hozzáadása szükséges"
#: Theme.java:52
msgid ""
"Could not read color theme settings.\n"
"You'll need to reinstall Processing."
-msgstr ""
-"Nem olvasható a színséma,\n"
-"a Processing újratelepítésére van szükség."
+msgstr ""
+"Nem olvasható a színséma,\n"
+"a Processing újratelepítésére van szükség."
#: Preferences.java:80
msgid "Browse"
-msgstr "Tallóz"
+msgstr "Tallóz"
#: Preferences.java:83
msgid "System Default"
@@ -1456,11 +1456,11 @@ msgstr ""
#: Preferences.java:86
msgid "Catalan"
-msgstr "Katalán"
+msgstr "Katalán"
#: Preferences.java:87
msgid "Chinese Simplified"
-msgstr "Egyszerüsített kínai"
+msgstr "Egyszerüsített kínai"
#: Preferences.java:88
msgid "Chinese Traditional"
@@ -1468,15 +1468,15 @@ msgstr ""
#: Preferences.java:89
msgid "Danish"
-msgstr "Dán"
+msgstr "Dán"
#: Preferences.java:90
msgid "Dutch"
-msgstr "Holland"
+msgstr "Holland"
#: Preferences.java:91
msgid "English"
-msgstr "Angol"
+msgstr "Angol"
#: Preferences.java:92
msgid "Estonian"
@@ -1484,27 +1484,27 @@ msgstr ""
#: Preferences.java:93
msgid "French"
-msgstr "Francia"
+msgstr "Francia"
#: Preferences.java:94
msgid "Filipino"
-msgstr "Fülöp-szigetek"
+msgstr "Fülöp-szigetek"
#: Preferences.java:95
msgid "Galician"
-msgstr "Gall"
+msgstr "Gall"
#: Preferences.java:96
msgid "German"
-msgstr "Német"
+msgstr "Német"
#: Preferences.java:97
msgid "Greek"
-msgstr "Görög"
+msgstr "Görög"
#: Preferences.java:98
msgid "Hungarian"
-msgstr "Magyar"
+msgstr "Magyar"
#: Preferences.java:99
msgid "Indonesian"
@@ -1512,11 +1512,11 @@ msgstr ""
#: Preferences.java:100
msgid "Italian"
-msgstr "Olasz"
+msgstr "Olasz"
#: Preferences.java:101
msgid "Japanese"
-msgstr "Japán"
+msgstr "Japán"
#: Preferences.java:102
msgid "Korean"
@@ -1524,7 +1524,7 @@ msgstr ""
#: Preferences.java:103
msgid "Latvian"
-msgstr "Lett"
+msgstr "Lett"
#: Preferences.java:104
msgid "Lithuaninan"
@@ -1532,7 +1532,7 @@ msgstr ""
#: Preferences.java:105
msgid "Persian"
-msgstr "Perzsa"
+msgstr "Perzsa"
#: Preferences.java:106
msgid "Polish"
@@ -1544,49 +1544,49 @@ msgstr ""
#: Preferences.java:109
msgid "Romanian"
-msgstr "Román"
+msgstr "Román"
#: Preferences.java:110
msgid "Russian"
-msgstr "Orosz"
+msgstr "Orosz"
#: Preferences.java:111
msgid "Spanish"
-msgstr "Spanyol"
+msgstr "Spanyol"
#: Preferences.java:210
msgid ""
"Could not read default settings.\n"
"You'll need to reinstall Arduino."
-msgstr ""
-"Az alapértelezett beállítások nem olvashatóak\n"
-"Az Arduino újratelepítése szükséges."
+msgstr ""
+"Az alapértelezett beállítások nem olvashatóak\n"
+"Az Arduino újratelepítése szükséges."
#: Preferences.java:242
#, java-format
msgid "Could not read preferences from {0}"
-msgstr "A beállítások nem olvashatóak: {0}"
+msgstr "A beállítások nem olvashatóak: {0}"
#: Preferences.java:261
msgid "Error reading preferences"
-msgstr "Alapbeállítások olvasása közben hiba lépett fel"
+msgstr "Alapbeállítások olvasása közben hiba lépett fel"
#: Preferences.java:263
#, java-format
msgid ""
"Error reading the preferences file. Please delete (or move)\n"
"{0} and restart Arduino."
-msgstr ""
-"Hiba a beállítások olvasása során. Kérem törölje (vagy mozgassa el) a\n"
-"{0} file-t és indítsa újra az Arduino-t!"
+msgstr ""
+"Hiba a beállítások olvasása során. Kérem törölje (vagy mozgassa el) a\n"
+"{0} file-t és indítsa újra az Arduino-t!"
#: Preferences.java:299
msgid "Sketchbook location:"
-msgstr "SketchBook helye:"
+msgstr "SketchBook helye:"
#: Preferences.java:314
msgid "Select new sketchbook location"
-msgstr "Válasszon új SketchBook mappát"
+msgstr "Válasszon új SketchBook mappát"
#: Preferences.java:337
msgid "Editor language: "
@@ -1594,51 +1594,51 @@ msgstr ""
#: Preferences.java:342 Preferences.java:358
msgid " (requires restart of Arduino)"
-msgstr " (Arduino újraindítása szükséges)"
+msgstr " (Arduino újraindítása szükséges)"
#: Preferences.java:354
msgid "Editor font size: "
-msgstr "Szerkesztő betűméret:"
+msgstr "Szerkesztő betűméret:"
#: Preferences.java:371
msgid "Show verbose output during: "
-msgstr "Log mutatása:"
+msgstr "Log mutatása:"
#: Preferences.java:373
msgid "compilation "
-msgstr "fordításkor "
+msgstr "fordításkor "
#: Preferences.java:375
msgid "upload"
-msgstr "feltöltéskor"
+msgstr "feltöltéskor"
#: Preferences.java:384
msgid "Verify code after upload"
-msgstr "Kód ellenőrzés feltöltés után"
+msgstr "Kód ellenőrzés feltöltés után"
#: Preferences.java:393
msgid "Use external editor"
-msgstr "Külső szerkesztő használata"
+msgstr "Külső szerkesztő használata"
#: Preferences.java:403
msgid "Check for updates on startup"
-msgstr "Újabb verzió ellenőrzése indításkor"
+msgstr "Újabb verzió ellenőrzése indításkor"
#: Preferences.java:412
msgid "Update sketch files to new extension on save (.pde -> .ino)"
-msgstr "Sketch frissítése az új kiterjesztéssel (.pde -> .ino)"
+msgstr "Sketch frissítése az új kiterjesztéssel (.pde -> .ino)"
#: Preferences.java:423
msgid "Automatically associate .ino files with Arduino"
-msgstr "Automatikus kiterjesztés-hozzárendelés: .ino->Arduino"
+msgstr "Automatikus kiterjesztés-hozzárendelés: .ino->Arduino"
#: Preferences.java:433
msgid "More preferences can be edited directly in the file"
-msgstr "További számos beállítás elérhető a file közvetlen szerkesztésével"
+msgstr "További számos beállítás elérhető a file közvetlen szerkesztésével"
#: Preferences.java:462
msgid "(edit only when Arduino is not running)"
-msgstr "(csak akkor szerkeszthető, ha az Arduino nem fut)"
+msgstr "(csak akkor szerkeszthető, ha az Arduino nem fut)"
#: Preferences.java:609
#, java-format
diff --git a/app/src/processing/app/i18n/Resources_hu.properties b/app/src/processing/app/i18n/Resources_hu.properties
index bf805dbb5a1..a16051fe417 100644
--- a/app/src/processing/app/i18n/Resources_hu.properties
+++ b/app/src/processing/app/i18n/Resources_hu.properties
@@ -1,8 +1,8 @@
-# Hungarian translations for PACKAGE package.
-# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# Robert Cseh , 2012.
-#
+# Hungarian translations for PACKAGE package.
+# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Robert Cseh , 2012.
+#
!=Project-Id-Version\: PACKAGE VERSION\nReport-Msgid-Bugs-To\: Robert Cseh\nPOT-Creation-Date\: 2012-04-03 10\:24-0400\nPO-Revision-Date\: 2012-04-11 23\:15-0400\nLast-Translator\: Robert Cseh \nLanguage-Team\: Hungarian\nLanguage\: hu\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n
#: Editor.java:366
diff --git a/app/src/processing/app/i18n/Resources_id.po b/app/src/processing/app/i18n/Resources_id.po
index a75be9892ef..75a26469319 100644
--- a/app/src/processing/app/i18n/Resources_id.po
+++ b/app/src/processing/app/i18n/Resources_id.po
@@ -1,278 +1,278 @@
-# Indonesian translations for the Arduino IDE.
-# Copyright (C) 2012
-# This file is distributed under the same license as the Arduino IDE package.
-# Rininta Andari , 2012.
-#
+# Indonesian translations for the Arduino IDE.
+# Copyright (C) 2012
+# This file is distributed under the same license as the Arduino IDE package.
+# Rininta Andari , 2012.
+#
msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-04-02 18:10+0100\n"
-"PO-Revision-Date: 2012-04-15 23:20+0100\n"
-"Last-Translator: Rininta Andari \n"
-"Language-Team: Indonesian\n"
-"Language: id\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-04-02 18:10+0100\n"
+"PO-Revision-Date: 2012-04-15 23:20+0100\n"
+"Last-Translator: Rininta Andari \n"
+"Language-Team: Indonesian\n"
+"Language: id\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: Editor.java:366
msgid "No files were added to the sketch."
-msgstr "Tidak ada berkas yang ditambahkan ke sketsa."
+msgstr "Tidak ada berkas yang ditambahkan ke sketsa."
#: Editor.java:369 Sketch.java:996
msgid "One file added to the sketch."
-msgstr "Satu berkas ditambahkan ke sketsa."
+msgstr "Satu berkas ditambahkan ke sketsa."
#: Editor.java:373
#, java-format
msgid "{0} files added to the sketch."
-msgstr "{0} berkas ditambahkan ke sketsa."
+msgstr "{0} berkas ditambahkan ke sketsa."
#: Editor.java:484
msgid "File"
-msgstr "Berkas"
+msgstr "Berkas"
#: Editor.java:486 EditorToolbar.java:41
msgid "New"
-msgstr "Baru"
+msgstr "Baru"
#: Editor.java:494 Base.java:903
msgid "Open..."
-msgstr "Buka..."
+msgstr "Buka..."
#: Editor.java:503
msgid "Sketchbook"
-msgstr "Buku Sketsa"
+msgstr "Buku Sketsa"
#: Editor.java:509
msgid "Examples"
-msgstr "Contoh"
+msgstr "Contoh"
#: Editor.java:514 Editor.java:1977
msgid "Close"
-msgstr "Tutup"
+msgstr "Tutup"
#: Editor.java:522 Editor.java:2017 Editor.java:2421 EditorToolbar.java:41
#: EditorToolbar.java:46
msgid "Save"
-msgstr "Simpan"
+msgstr "Simpan"
#: Editor.java:530
msgid "Save As..."
-msgstr "Simpan Sebagai..."
+msgstr "Simpan Sebagai..."
#: Editor.java:538 EditorToolbar.java:41
msgid "Upload"
-msgstr "Unggah"
+msgstr "Unggah"
#: Editor.java:546 EditorToolbar.java:46
msgid "Upload Using Programmer"
-msgstr "Unggah Menggunakan Programmer"
+msgstr "Unggah Menggunakan Programmer"
#: Editor.java:556
msgid "Page Setup"
-msgstr "Pengaturan Halaman"
+msgstr "Pengaturan Halaman"
#: Editor.java:564
msgid "Print"
-msgstr "Cetak"
+msgstr "Cetak"
#: Editor.java:576 Preferences.java:279
msgid "Preferences"
-msgstr "Preferensi"
+msgstr "Preferensi"
#: Editor.java:586 Base.java:782
msgid "Quit"
-msgstr "Keluar"
+msgstr "Keluar"
#: Editor.java:600
msgid "Sketch"
-msgstr "Sketsa"
+msgstr "Sketsa"
#: Editor.java:602
msgid "Verify / Compile"
-msgstr "Memeriksa / Menyusun"
+msgstr "Memeriksa / Menyusun"
#: Editor.java:629
msgid "Import Library..."
-msgstr "Impor Perpustakaan..."
+msgstr "Impor Perpustakaan..."
#: Editor.java:634
msgid "Show Sketch Folder"
-msgstr "Tampilkan Map Sketsa"
+msgstr "Tampilkan Map Sketsa"
#: Editor.java:643
msgid "Add File..."
-msgstr "Tambah Berkas..."
+msgstr "Tambah Berkas..."
#: Editor.java:656
msgid "Tools"
-msgstr "Peralatan"
+msgstr "Peralatan"
#: Editor.java:662 EditorToolbar.java:41 EditorToolbar.java:46
msgid "Serial Monitor"
-msgstr "Serial Monitor"
+msgstr "Serial Monitor"
#: Editor.java:682
msgid "Board"
-msgstr "Papan"
+msgstr "Papan"
#: Editor.java:690
msgid "Serial Port"
-msgstr "Serial Port"
+msgstr "Serial Port"
#: Editor.java:695
msgid "Programmer"
-msgstr "Programmer"
+msgstr "Programmer"
#: Editor.java:699
msgid "Burn Bootloader"
-msgstr "Bakar Bootloader"
+msgstr "Bakar Bootloader"
#: Editor.java:923
msgid "serialMenu is null"
-msgstr "serialMenu is null"
+msgstr "serialMenu is null"
#: Editor.java:927 Editor.java:934
msgid "name is null"
-msgstr "name is null"
+msgstr "name is null"
#: Editor.java:986
msgid "error retrieving port list"
-msgstr "kesalahan dalam mengambil daftar port"
+msgstr "kesalahan dalam mengambil daftar port"
#: Editor.java:1002
msgid "Help"
-msgstr "Bantuan"
+msgstr "Bantuan"
#: Editor.java:1041
msgid "Getting Started"
-msgstr "Memulai"
+msgstr "Memulai"
#: Editor.java:1049
msgid "Environment"
-msgstr "Lingkungan"
+msgstr "Lingkungan"
#: Editor.java:1057
msgid "Troubleshooting"
-msgstr "Pemecahan masalah"
+msgstr "Pemecahan masalah"
#: Editor.java:1065
msgid "Reference"
-msgstr "Referensi"
+msgstr "Referensi"
#: Editor.java:1073 Editor.java:2728
msgid "Find in Reference"
-msgstr "Cari di Referensi"
+msgstr "Cari di Referensi"
#: Editor.java:1083
msgid "Frequently Asked Questions"
-msgstr "Pertanyaan yang Sering Diajukan"
+msgstr "Pertanyaan yang Sering Diajukan"
#: Editor.java:1091
msgid "Visit Arduino.cc"
-msgstr "Kunjungi Arduino.cc"
+msgstr "Kunjungi Arduino.cc"
#: Editor.java:1094
msgid "http://arduino.cc/"
-msgstr "http://arduino.cc/"
+msgstr "http://arduino.cc/"
#: Editor.java:1102
msgid "About Arduino"
-msgstr "Tentang Arduino"
+msgstr "Tentang Arduino"
#: Editor.java:1116
msgid "Edit"
-msgstr "Edit"
+msgstr "Edit"
#: Editor.java:1119 Editor.java:1341
msgid "Undo"
-msgstr "Batalkan"
+msgstr "Batalkan"
#: Editor.java:1124 Editor.java:1126 Editor.java:1376
msgid "Redo"
-msgstr "Ulang"
+msgstr "Ulang"
#: Editor.java:1135 Editor.java:2652
msgid "Cut"
-msgstr "Potong"
+msgstr "Potong"
#: Editor.java:1143 Editor.java:2660
msgid "Copy"
-msgstr "Salin"
+msgstr "Salin"
#: Editor.java:1151 Editor.java:2668
msgid "Copy for Forum"
-msgstr "Salin untuk Forum"
+msgstr "Salin untuk Forum"
#: Editor.java:1163 Editor.java:2676
msgid "Copy as HTML"
-msgstr "Salin sebagai HTML"
+msgstr "Salin sebagai HTML"
#: Editor.java:1175 Editor.java:2684
msgid "Paste"
-msgstr "Rekat"
+msgstr "Rekat"
#: Editor.java:1184 Editor.java:2692
msgid "Select All"
-msgstr "Pilih Semua"
+msgstr "Pilih Semua"
#: Editor.java:1194 Editor.java:2702
msgid "Comment/Uncomment"
-msgstr "Beri komentar/Tidak beri komentar"
+msgstr "Beri komentar/Tidak beri komentar"
#: Editor.java:1202 Editor.java:2710
msgid "Increase Indent"
-msgstr "Tambah Indentasi"
+msgstr "Tambah Indentasi"
#: Editor.java:1210 Editor.java:2718
msgid "Decrease Indent"
-msgstr "Kurangi Indentasi"
+msgstr "Kurangi Indentasi"
#: Editor.java:1220
msgid "Find..."
-msgstr "Cari..."
+msgstr "Cari..."
#: Editor.java:1235
msgid "Find Next"
-msgstr "Cari Berikutnya"
+msgstr "Cari Berikutnya"
#: Editor.java:1245
msgid "Find Previous"
-msgstr "Cari Sebelumnya"
+msgstr "Cari Sebelumnya"
#: Editor.java:1255
msgid "Use Selection For Find"
-msgstr "Gunakan Pilihan Untuk Pencarian"
+msgstr "Gunakan Pilihan Untuk Pencarian"
#: Editor.java:1816
msgid "First select a word to find in the reference."
-msgstr "Pertama pilih sebuah kata untuk dicari di referensi."
+msgstr "Pertama pilih sebuah kata untuk dicari di referensi."
#: Editor.java:1823
#, java-format
msgid "No reference available for \"{0}\""
-msgstr "Tidak ada referensi yang tersedia untuk \"{0}\""
+msgstr "Tidak ada referensi yang tersedia untuk \"{0}\""
#: Editor.java:1826
#, java-format
msgid "{0}.html"
-msgstr "{0}.html"
+msgstr "{0}.html"
#: Editor.java:1843 Sketch.java:1647
msgid "Compiling sketch..."
-msgstr "Menyusun sketsa..."
+msgstr "Menyusun sketsa..."
#: Editor.java:1864 Editor.java:1881
msgid "Done compiling."
-msgstr "Selesai menyusun."
+msgstr "Selesai menyusun."
#: Editor.java:1973
#, java-format
msgid "Save changes to \"{0}\"? "
-msgstr "Simpan perubahan ke \"{0}\"? "
+msgstr "Simpan perubahan ke \"{0}\"? "
#: Editor.java:2006
msgid ""
@@ -280,37 +280,37 @@ msgid ""
"{ font: 11pt \"Lucida Grande\"; margin-top: 8px } Do you "
"want to save changes to this sketch before closing?
If you don't "
"save, your changes will be lost."
-msgstr ""
-"
Apakah anda "
-"ingin menyimpan perubahan ke sketsa ini sebelum menutup?
Jika anda tidak "
-"menyimpan, perubahan anda akan hilang."
+msgstr ""
+"
Apakah anda "
+"ingin menyimpan perubahan ke sketsa ini sebelum menutup?
Jika anda tidak "
+"menyimpan, perubahan anda akan hilang."
#: Editor.java:2017 Editor.java:2098 Editor.java:2418 Sketch.java:589
#: Sketch.java:741 Sketch.java:1046 Preferences.java:78
msgid "Cancel"
-msgstr "Batalkan"
+msgstr "Batalkan"
#: Editor.java:2017
msgid "Don't Save"
-msgstr "Jangan Simpan"
+msgstr "Jangan Simpan"
#: Editor.java:2089
msgid "Bad file selected"
-msgstr "Berkas buruk dipilih"
+msgstr "Berkas buruk dipilih"
#: Editor.java:2090
msgid ""
"Processing can only open its own sketches\n"
"and other files ending in .ino or .pde"
-msgstr ""
-"Processing hanya dapat membuka sketsanya sendiri\n"
-"dan berkas lainnya yang berakhir dengan .ino atau .pde"
+msgstr ""
+"Processing hanya dapat membuka sketsanya sendiri\n"
+"dan berkas lainnya yang berakhir dengan .ino atau .pde"
#: Editor.java:2098 Editor.java:2418 Sketch.java:589 Sketch.java:741
#: Sketch.java:1046 Preferences.java:79
msgid "OK"
-msgstr "OK"
+msgstr "OK"
#: Editor.java:2100
#, java-format
@@ -318,329 +318,329 @@ msgid ""
"The file \"{0}\" needs to be inside\n"
"a sketch folder named \"{1}\".\n"
"Create this folder, move the file, and continue?"
-msgstr ""
-"Berkas \"{0}\" harus berada di dalam\n"
-"sebuah map sketsa bernama \"{1}\".\n"
-"Buatkan map ini, pindahkan berkas, dan lanjutkan?"
+msgstr ""
+"Berkas \"{0}\" harus berada di dalam\n"
+"sebuah map sketsa bernama \"{1}\".\n"
+"Buatkan map ini, pindahkan berkas, dan lanjutkan?"
#: Editor.java:2109
msgid "Moving"
-msgstr "Memindahkan"
+msgstr "Memindahkan"
#: Editor.java:2120 Editor.java:2131 Editor.java:2141 Editor.java:2159
#: Sketch.java:479 Sketch.java:485 Sketch.java:500 Sketch.java:507
#: Sketch.java:530 Sketch.java:547 Base.java:1861 Preferences.java:240
msgid "Error"
-msgstr "Kesalahan"
+msgstr "Kesalahan"
#: Editor.java:2122
#, java-format
msgid "A folder named \"{0}\" already exists. Can't open sketch."
-msgstr "Sebuah map bernama \"{0}\" sudah ada. Tidak dapat membuka sketsa."
+msgstr "Sebuah map bernama \"{0}\" sudah ada. Tidak dapat membuka sketsa."
#: Editor.java:2132
msgid "Could not create the sketch folder."
-msgstr "Tidak dapat membuat map sketsa."
+msgstr "Tidak dapat membuat map sketsa."
#: Editor.java:2141
msgid "Could not copy to a proper location."
-msgstr "Tidak dapat menyalin ke lokasi yang tepat."
+msgstr "Tidak dapat menyalin ke lokasi yang tepat."
#: Editor.java:2159
msgid "Could not create the sketch."
-msgstr "Tidak dapat membuat sketsa."
+msgstr "Tidak dapat membuat sketsa."
#: Editor.java:2166
#, java-format
msgid "{0} | Arduino {1}"
-msgstr "{0} | Arduino {1}"
+msgstr "{0} | Arduino {1}"
#: Editor.java:2223 Editor.java:2261
msgid "Saving..."
-msgstr "Menyimpan..."
+msgstr "Menyimpan..."
#: Editor.java:2228 Editor.java:2264
msgid "Done Saving."
-msgstr "Selesai Menyimpan."
+msgstr "Selesai Menyimpan."
#: Editor.java:2270
msgid "Save Canceled."
-msgstr "Penyimpanan Dibatalkan."
+msgstr "Penyimpanan Dibatalkan."
#: Editor.java:2296
#, java-format
msgid ""
"Serial port {0} not found.\n"
"Retry the upload with another serial port?"
-msgstr ""
-"Serial port {0} tidak ditemukan.\n"
-"Ulang unggah dengan serial port lain?"
+msgstr ""
+"Serial port {0} tidak ditemukan.\n"
+"Ulang unggah dengan serial port lain?"
#: Editor.java:2331
msgid "Uploading to I/O Board..."
-msgstr "Mengunggah ke Papan I/O..."
+msgstr "Mengunggah ke Papan I/O..."
#: Editor.java:2348 Editor.java:2384
msgid "Done uploading."
-msgstr "Selesai mengunggah."
+msgstr "Selesai mengunggah."
#: Editor.java:2356 Editor.java:2392
msgid "Upload canceled."
-msgstr "Unggah dibatalkan."
+msgstr "Unggah dibatalkan."
#: Editor.java:2420
msgid "Save changes before export?"
-msgstr "Simpan perubahan sebelum ekspor?"
+msgstr "Simpan perubahan sebelum ekspor?"
#: Editor.java:2435
msgid "Export canceled, changes must first be saved."
-msgstr "Ekspor dibatalkan, perubahan harus disimpan terlebih dahulu."
+msgstr "Ekspor dibatalkan, perubahan harus disimpan terlebih dahulu."
#: Editor.java:2457
msgid "Burning bootloader to I/O Board (this may take a minute)..."
-msgstr "Membakar bootloader ke Papan I/O (ini akan berlangsung beberapa saat)..."
+msgstr "Membakar bootloader ke Papan I/O (ini akan berlangsung beberapa saat)..."
#: Editor.java:2463
msgid "Done burning bootloader."
-msgstr "Selesai membakar bootloader."
+msgstr "Selesai membakar bootloader."
#: Editor.java:2465 Editor.java:2469 Editor.java:2473
msgid "Error while burning bootloader."
-msgstr "Kesalahan ketika membakar bootloader."
+msgstr "Kesalahan ketika membakar bootloader."
#: Editor.java:2500
msgid "Printing..."
-msgstr "Mencetak..."
+msgstr "Mencetak..."
#: Editor.java:2517
msgid "Done printing."
-msgstr "Selesai mencetak."
+msgstr "Selesai mencetak."
#: Editor.java:2520
msgid "Error while printing."
-msgstr "Kesalahan ketika mencetak."
+msgstr "Kesalahan ketika mencetak."
#: Editor.java:2524
msgid "Printing canceled."
-msgstr "Mencetak dibatalkan."
+msgstr "Mencetak dibatalkan."
#: Editor.java:2572
#, java-format
msgid "Bad error line: {0}"
-msgstr "Baris kesalahan buruk: {0}"
+msgstr "Baris kesalahan buruk: {0}"
#: Editor.java:2641
msgid "Open URL"
-msgstr "Buka URL"
+msgstr "Buka URL"
#: UpdateCheck.java:53
msgid "http://www.arduino.cc/latest.txt"
-msgstr "http://www.arduino.cc/latest.txt"
+msgstr "http://www.arduino.cc/latest.txt"
#: UpdateCheck.java:103
msgid ""
"A new version of Arduino is available,\n"
"would you like to visit the Arduino download page?"
-msgstr ""
-"Sebuah versi baru Arduino telah tersedia,\n"
-"apakah anda ingin mengunjungi halaman unduh Arduino?"
+msgstr ""
+"Sebuah versi baru Arduino telah tersedia,\n"
+"apakah anda ingin mengunjungi halaman unduh Arduino?"
#: UpdateCheck.java:108 Preferences.java:76
msgid "Yes"
-msgstr "Ya"
+msgstr "Ya"
#: UpdateCheck.java:108 Preferences.java:77
msgid "No"
-msgstr "Tidak"
+msgstr "Tidak"
#: UpdateCheck.java:111
msgid "Update"
-msgstr "Pembaruan"
+msgstr "Pembaruan"
#: UpdateCheck.java:118
msgid "http://www.arduino.cc/en/Main/Software"
-msgstr "http://www.arduino.cc/en/Main/Software"
+msgstr "http://www.arduino.cc/en/Main/Software"
#: FindReplace.java:80
msgid "Find:"
-msgstr "Cari:"
+msgstr "Cari:"
#: FindReplace.java:81
msgid "Replace with:"
-msgstr "Ganti dengan:"
+msgstr "Ganti dengan:"
#: FindReplace.java:96
msgid "Ignore Case"
-msgstr "Abaikan Kasus"
+msgstr "Abaikan Kasus"
#: FindReplace.java:105
msgid "Wrap Around"
-msgstr "Membungkus"
+msgstr "Membungkus"
#: FindReplace.java:120 FindReplace.java:131
msgid "Replace All"
-msgstr "Ganti Semua"
+msgstr "Ganti Semua"
#: FindReplace.java:121 FindReplace.java:130 Sketch.java:1050
msgid "Replace"
-msgstr "Ganti"
+msgstr "Ganti"
#: FindReplace.java:122 FindReplace.java:129
msgid "Replace & Find"
-msgstr "Ganti & Cari"
+msgstr "Ganti & Cari"
#: FindReplace.java:123 FindReplace.java:128
msgid "Previous"
-msgstr "Sebelumnya"
+msgstr "Sebelumnya"
#: FindReplace.java:124 FindReplace.java:127
msgid "Find"
-msgstr "Cari"
+msgstr "Cari"
#: SerialMonitor.java:93
msgid "Send"
-msgstr "Kirim"
+msgstr "Kirim"
#: SerialMonitor.java:110
msgid "Autoscroll"
-msgstr "Scroll otomatis"
+msgstr "Scroll otomatis"
#: SerialMonitor.java:112
msgid "No line ending"
-msgstr "Tidak ada akhir baris"
+msgstr "Tidak ada akhir baris"
#: SerialMonitor.java:112
msgid "Newline"
-msgstr "Baris baru"
+msgstr "Baris baru"
#: SerialMonitor.java:112
msgid "Carriage return"
-msgstr "Bawaan kembali"
+msgstr "Bawaan kembali"
#: SerialMonitor.java:112
msgid "Both NL & CR"
-msgstr "Keduanya NL & CR"
+msgstr "Keduanya NL & CR"
#: SerialMonitor.java:130 SerialMonitor.java:133
msgid " baud"
-msgstr " baud"
+msgstr " baud"
#: Serial.java:147
#, java-format
msgid ""
"Serial port ''{0}'' already in use. Try quiting any programs that may be "
"using it."
-msgstr ""
-"Serial port ''{0}'' telah digunakan. Coba hentikan semua program yang mungkin "
-"menggunakannya."
+msgstr ""
+"Serial port ''{0}'' telah digunakan. Coba hentikan semua program yang mungkin "
+"menggunakannya."
#: Serial.java:154
#, java-format
msgid "Error opening serial port ''{0}''."
-msgstr "Kesalahan dalam membuka serial port ''{0}''."
+msgstr "Kesalahan dalam membuka serial port ''{0}''."
#: Serial.java:167
#, java-format
msgid ""
"Serial port ''{0}'' not found. Did you select the right one from the Tools > "
"Serial Port menu?"
-msgstr ""
-"Serial port ''{0}'' tidak ditemukan. Apakah anda telah memilih yang tepat dari menu Peralatan > "
-"Serial Port?"
+msgstr ""
+"Serial port ''{0}'' tidak ditemukan. Apakah anda telah memilih yang tepat dari menu Peralatan > "
+"Serial Port?"
#: Serial.java:424
#, java-format
msgid ""
"readBytesUntil() byte buffer is too small for the {0} bytes up to and "
"including char {1}"
-msgstr ""
-"Penyangga byte readBytesUntil() terlalu kecil untuk {0} bytes sampai dengan dan "
-"termasuk char {1}"
+msgstr ""
+"Penyangga byte readBytesUntil() terlalu kecil untuk {0} bytes sampai dengan dan "
+"termasuk char {1}"
#: Serial.java:567
#, java-format
msgid "Error inside Serial.{0}()"
-msgstr "Kesalahan di dalam Serial.{0}()"
+msgstr "Kesalahan di dalam Serial.{0}()"
#: tools/AutoFormat.java:91
msgid "Auto Format"
-msgstr "Format Otomatis"
+msgstr "Format Otomatis"
#: tools/AutoFormat.java:913 tools/format/src/AutoFormat.java:54
msgid "No changes necessary for Auto Format."
-msgstr "Tidak diperlukan perubahan untuk Format Otomatis."
+msgstr "Tidak diperlukan perubahan untuk Format Otomatis."
#: tools/AutoFormat.java:919
msgid "Auto Format Canceled: Too many right parentheses."
-msgstr "Format Otomatis Dibatalkan: Terlalu banyak tanda kurung kanan."
+msgstr "Format Otomatis Dibatalkan: Terlalu banyak tanda kurung kanan."
#: tools/AutoFormat.java:922
msgid "Auto Format Canceled: Too many left parentheses."
-msgstr "Format Otomatis Dibatalkan: Terlalu banyak tanda kurung kiri."
+msgstr "Format Otomatis Dibatalkan: Terlalu banyak tanda kurung kiri."
#: tools/AutoFormat.java:928
msgid "Auto Format Canceled: Too many right curly braces."
-msgstr "Format Otomatis Dibatalkan: Terlalu banyak tanda kurung kurawal kanan."
+msgstr "Format Otomatis Dibatalkan: Terlalu banyak tanda kurung kurawal kanan."
#: tools/AutoFormat.java:931
msgid "Auto Format Canceled: Too many left curly braces."
-msgstr "Format Otomatis Dibatalkan: Terlalu banyak tanda kurung kurawal kiri."
+msgstr "Format Otomatis Dibatalkan: Terlalu banyak tanda kurung kurawal kiri."
#: tools/AutoFormat.java:941
msgid "Auto Format finished."
-msgstr "Format Otomatis selesai."
+msgstr "Format Otomatis selesai."
#: tools/FixEncoding.java:41 tools/FixEncoding.java:58
#: tools/FixEncoding.java:79
msgid "Fix Encoding & Reload"
-msgstr "Perbaiki Pengkodean & Muat Ulang"
+msgstr "Perbaiki Pengkodean & Muat Ulang"
#: tools/FixEncoding.java:57
msgid "Discard all changes and reload sketch?"
-msgstr "Hapus semua perubahan dan muat ulang sketsa?"
+msgstr "Hapus semua perubahan dan muat ulang sketsa?"
#: tools/FixEncoding.java:77
msgid ""
"An error occurred while trying to fix the file encoding.\n"
"Do not attempt to save this sketch as it may overwrite\n"
"the old version. Use Open to re-open the sketch and try again.\n"
-msgstr ""
-"Sebuah kesalahan muncul ketika mencoba memperbaiki pengkodean berkas.\n"
-"Jangan mencoba menyimpan sketsa ini karena dapat menimpa\n"
-"versi lama. Gunakan Buka untuk kembali membuka sketsa dan coba lagi.\n"
+msgstr ""
+"Sebuah kesalahan muncul ketika mencoba memperbaiki pengkodean berkas.\n"
+"Jangan mencoba menyimpan sketsa ini karena dapat menimpa\n"
+"versi lama. Gunakan Buka untuk kembali membuka sketsa dan coba lagi.\n"
#: tools/Archiver.java:48
msgid "Archive Sketch"
-msgstr "Arsipkan Sketsa"
+msgstr "Arsipkan Sketsa"
#: tools/Archiver.java:59
msgid "yyMMdd"
-msgstr "yyMMdd"
+msgstr "yyMMdd"
#: tools/Archiver.java:74
msgid "Couldn't archive sketch"
-msgstr "Tidak dapat mengarsipkan sketsa"
+msgstr "Tidak dapat mengarsipkan sketsa"
#: tools/Archiver.java:75
msgid ""
"Archiving the sketch has been canceled because\n"
"the sketch couldn't save properly."
-msgstr ""
-"Pengarsipan sketsa telah dibatalkan karena\n"
-"sketsa tidak dapat menyimpan dengan benar."
+msgstr ""
+"Pengarsipan sketsa telah dibatalkan karena\n"
+"sketsa tidak dapat menyimpan dengan benar."
#: tools/Archiver.java:109
msgid "Archive sketch as:"
-msgstr "Arsipkan sketsa sebagai:"
+msgstr "Arsipkan sketsa sebagai:"
#: tools/Archiver.java:139
msgid "Archive sketch canceled."
-msgstr "Pengarsipan sketsa dibatalkan."
+msgstr "Pengarsipan sketsa dibatalkan."
#: SketchCode.java:83
#, java-format
msgid "Error while loading code {0}"
-msgstr "Kesalahan ketika memuat kode {0}"
+msgstr "Kesalahan ketika memuat kode {0}"
#: SketchCode.java:258
#, java-format
@@ -653,46 +653,46 @@ msgstr ""
#: Sketch.java:278 Sketch.java:307 Sketch.java:581 Sketch.java:970
msgid "Sketch is Read-Only"
-msgstr "Sketsa Hanya-Baca"
+msgstr "Sketsa Hanya-Baca"
#: Sketch.java:279 Sketch.java:308 Sketch.java:582 Sketch.java:971
msgid ""
"Some files are marked \"read-only\", so you'll\n"
"need to re-save the sketch in another location,\n"
"and try again."
-msgstr ""
-"Beberapa berkas ditandai \"hanya-baca\", jadi anda harus\n"
-"kembali menyimpan sketsa di lokasi lain,\n"
-"dan coba lagi."
+msgstr ""
+"Beberapa berkas ditandai \"hanya-baca\", jadi anda harus\n"
+"kembali menyimpan sketsa di lokasi lain,\n"
+"dan coba lagi."
#: Sketch.java:286
msgid "Name for new file:"
-msgstr "Nama untuk berkas baru:"
+msgstr "Nama untuk berkas baru:"
#: Sketch.java:298
msgid "Sketch is Untitled"
-msgstr "Sketsa tidak berjudul"
+msgstr "Sketsa tidak berjudul"
#: Sketch.java:299
msgid ""
"How about saving the sketch first \n"
"before trying to rename it?"
-msgstr ""
-"Bagaimana jika simpan sketsa terlebih dahulu \n"
-"sebelum mencoba untuk mengubah namanya?"
+msgstr ""
+"Bagaimana jika simpan sketsa terlebih dahulu \n"
+"sebelum mencoba untuk mengubah namanya?"
#: Sketch.java:359 Sketch.java:366 Sketch.java:377
msgid "Problem with rename"
-msgstr "Masalah dengan pengubahan nama"
+msgstr "Masalah dengan pengubahan nama"
#: Sketch.java:360
msgid "The name cannot start with a period."
-msgstr "Nama tidak dapat diawali dengan sebuah periode."
+msgstr "Nama tidak dapat diawali dengan sebuah periode."
#: Sketch.java:368
#, java-format
msgid "\".{0}\" is not a valid extension."
-msgstr "\".{0}\" bukan ekstensi yang sah."
+msgstr "\".{0}\" bukan ekstensi yang sah."
#: Sketch.java:378
msgid ""
@@ -703,92 +703,92 @@ msgstr ""
#: Sketch.java:400 Sketch.java:414 Sketch.java:423 Sketch.java:863
msgid "Nope"
-msgstr "Tidak"
+msgstr "Tidak"
#: Sketch.java:402
#, java-format
msgid "A file named \"{0}\" already exists in \"{1}\""
-msgstr "Sebuah berkas bernama \"{0}\" sudah ada di \"{1}\""
+msgstr "Sebuah berkas bernama \"{0}\" sudah ada di \"{1}\""
#: Sketch.java:415
msgid "You can't have a .cpp file with the same name as the sketch."
-msgstr "Anda tidak dapat memiliki sebuah berkas .cpp dengan nama yang sama dengan sketsa."
+msgstr "Anda tidak dapat memiliki sebuah berkas .cpp dengan nama yang sama dengan sketsa."
#: Sketch.java:425
msgid ""
"You can't rename the sketch to \"{0}\"\n"
"because the sketch already has a .cpp file with that name."
-msgstr ""
-"Anda tidak dapat mengubah nama sketsa ke \"{0}\"\n"
-"karena sketsa telah memiliki sebuah berkas .cpp dengan nama tersebut."
+msgstr ""
+"Anda tidak dapat mengubah nama sketsa ke \"{0}\"\n"
+"karena sketsa telah memiliki sebuah berkas .cpp dengan nama tersebut."
#: Sketch.java:459
msgid "Cannot Rename"
-msgstr "Tidak dapat mengubah nama"
+msgstr "Tidak dapat mengubah nama"
#: Sketch.java:461
#, java-format
msgid "Sorry, a sketch (or folder) named \"{0}\" already exists."
-msgstr "Maaf, sebuah sketsa (atau map) bernama \"{0}\" sudah ada."
+msgstr "Maaf, sebuah sketsa (atau map) bernama \"{0}\" sudah ada."
#: Sketch.java:479
msgid "Could not rename the sketch. (0)"
-msgstr "Tidak dapat mengubah nama sketsa. (0)"
+msgstr "Tidak dapat mengubah nama sketsa. (0)"
#: Sketch.java:487 Sketch.java:532
#, java-format
msgid "Could not rename \"{0}\" to \"{1}\""
-msgstr "Tidak dapat mengubah nama \"{0}\" ke \"{1}\""
+msgstr "Tidak dapat mengubah nama \"{0}\" ke \"{1}\""
#: Sketch.java:500
msgid "Could not rename the sketch. (1)"
-msgstr "Tidak dapat mengubah nama sketsa. (1)"
+msgstr "Tidak dapat mengubah nama sketsa. (1)"
#: Sketch.java:507
msgid "Could not rename the sketch. (2)"
-msgstr "Tidak dapat mengubah nama sketsa. (2)"
+msgstr "Tidak dapat mengubah nama sketsa. (2)"
#: Sketch.java:544
msgid "createNewFile() returned false"
-msgstr "createNewFile() kembali salah"
+msgstr "createNewFile() kembali salah"
#: Sketch.java:591
msgid "Are you sure you want to delete this sketch?"
-msgstr "Apakah anda yakin ingin menghapus sketsa ini?"
+msgstr "Apakah anda yakin ingin menghapus sketsa ini?"
#: Sketch.java:592
#, java-format
msgid "Are you sure you want to delete \"{0}\"?"
-msgstr "Apakah anda yakin ingin menghapus \"{0}\"?"
+msgstr "Apakah anda yakin ingin menghapus \"{0}\"?"
#: Sketch.java:595 EditorHeader.java:314
msgid "Delete"
-msgstr "Hapus"
+msgstr "Hapus"
#: Sketch.java:620
msgid "Couldn't do it"
-msgstr "Tidak dapat melakukannya"
+msgstr "Tidak dapat melakukannya"
#: Sketch.java:621
#, java-format
msgid "Could not delete \"{0}\"."
-msgstr "Tidak dapat menghapus \"{0}\"."
+msgstr "Tidak dapat menghapus \"{0}\"."
#: Sketch.java:651
msgid "removeCode: internal error.. could not find code"
-msgstr "removeCode: kesalahan internal.. tidak dapat menemukan kode"
+msgstr "removeCode: kesalahan internal.. tidak dapat menemukan kode"
#: Sketch.java:724
msgid "Sketch is read-only"
-msgstr "Sketsa hanya-baca"
+msgstr "Sketsa hanya-baca"
#: Sketch.java:725
msgid ""
"Some files are marked \"read-only\", so you'll\n"
"need to re-save this sketch to another location."
-msgstr ""
-"Beberapa berkas ditandai \"hanya-baca\", jadi anda harus\n"
-"kembali menyimpan sketsa ini di lokasi lain."
+msgstr ""
+"Beberapa berkas ditandai \"hanya-baca\", jadi anda harus\n"
+"kembali menyimpan sketsa ini di lokasi lain."
#: Sketch.java:743
msgid ""
@@ -803,115 +803,115 @@ msgstr ""
#: Sketch.java:750
msgid ".pde -> .ino"
-msgstr ".pde -> .ino"
+msgstr ".pde -> .ino"
#: Sketch.java:829
msgid "Save sketch folder as..."
-msgstr "Simpan map sketsa sebagai..."
+msgstr "Simpan map sketsa sebagai..."
#: Sketch.java:865
msgid ""
"You can't save the sketch as \"{0}\"\n"
"because the sketch already has a .cpp file with that name."
-msgstr ""
-"Anda tidak dapat menyimpan sketsa sebagai \"{0}\"\n"
-"karena sketsa telah memiliki sebuah berkas .cpp dengan nama tersebut."
+msgstr ""
+"Anda tidak dapat menyimpan sketsa sebagai \"{0}\"\n"
+"karena sketsa telah memiliki sebuah berkas .cpp dengan nama tersebut."
#: Sketch.java:886
msgid "How very Borges of you"
-msgstr "Anda Borges sekali"
+msgstr "Anda Borges sekali"
#: Sketch.java:887
msgid ""
"You cannot save the sketch into a folder\n"
"inside itself. This would go on forever."
-msgstr ""
-"Anda tidak dapat menyimpan sketsa kedalam sebuah map\n"
-"di dalam dirinya sendiri. Ini akan memakan waktu selamanya."
+msgstr ""
+"Anda tidak dapat menyimpan sketsa kedalam sebuah map\n"
+"di dalam dirinya sendiri. Ini akan memakan waktu selamanya."
#: Sketch.java:979
msgid "Select an image or other data file to copy to your sketch"
-msgstr "Pilih sebuah gambar atau berkas data lain untuk disalin ke sketsa anda"
+msgstr "Pilih sebuah gambar atau berkas data lain untuk disalin ke sketsa anda"
#: Sketch.java:1047
#, java-format
msgid "Replace the existing version of {0}?"
-msgstr "Ganti versi {0} yang ada?"
+msgstr "Ganti versi {0} yang ada?"
#: Sketch.java:1069 Sketch.java:1092
msgid "Error adding file"
-msgstr "Kesalahan dalam menambahkan file"
+msgstr "Kesalahan dalam menambahkan file"
#: Sketch.java:1070
#, java-format
msgid "Could not delete the existing ''{0}'' file."
-msgstr "Tidak dapat menghapus berkas ''{0}'' yang ada."
+msgstr "Tidak dapat menghapus berkas ''{0}'' yang ada."
#: Sketch.java:1078
msgid "You can't fool me"
-msgstr "Anda tidak dapat membodohi saya"
+msgstr "Anda tidak dapat membodohi saya"
#: Sketch.java:1079
msgid ""
"This file has already been copied to the\n"
"location from which where you're trying to add it.\n"
"I ain't not doin nuthin'."
-msgstr ""
-"Berkas ini telah disalin ke\n"
-"lokasi darimana anda mencoba untuk menambahkannya.\n"
-"Saya bukan tidak melakukan apa-apa."
+msgstr ""
+"Berkas ini telah disalin ke\n"
+"lokasi darimana anda mencoba untuk menambahkannya.\n"
+"Saya bukan tidak melakukan apa-apa."
#: Sketch.java:1093
#, java-format
msgid "Could not add ''{0}'' to the sketch."
-msgstr "Tidak dapat menambahkan ''{0}'' ke sketsa."
+msgstr "Tidak dapat menambahkan ''{0}'' ke sketsa."
#: Sketch.java:1393 Sketch.java:1424
msgid "Build folder disappeared or could not be written"
-msgstr "Map Bangun hilang atau tidak dapat ditulis"
+msgstr "Map Bangun hilang atau tidak dapat ditulis"
#: Sketch.java:1408
msgid "Could not find main class"
-msgstr "Tidak dapat menemukan kelas utama"
+msgstr "Tidak dapat menemukan kelas utama"
#: Sketch.java:1433
#, java-format
msgid "Uncaught exception type: {0}"
-msgstr "Jenis pengecualian: {0} tidak tertangkap"
+msgstr "Jenis pengecualian: {0} tidak tertangkap"
#: Sketch.java:1465
#, java-format
msgid "Problem moving {0} to the build folder"
-msgstr "Masalah dalam memindahkan {0} ke map bangun"
+msgstr "Masalah dalam memindahkan {0} ke map bangun"
#: Sketch.java:1661
msgid "Uploading..."
-msgstr "Mengunggah..."
+msgstr "Mengunggah..."
#: Sketch.java:1684
#, java-format
msgid "Binary sketch size: {0} bytes (of a {1} byte maximum)"
-msgstr "Ukuran biner sketsa: {0} bytes (dari maksimum {1} byte)"
+msgstr "Ukuran biner sketsa: {0} bytes (dari maksimum {1} byte)"
#: Sketch.java:1689
msgid "Couldn't determine program size: {0}"
-msgstr "Tidak dapat menentukan ukuran program: {0}"
+msgstr "Tidak dapat menentukan ukuran program: {0}"
#: Sketch.java:1694
msgid ""
"Sketch too big; see http://www.arduino.cc/en/Guide/Troubleshooting#size for "
"tips on reducing it."
-msgstr ""
-"Sketsa terlalu besar; lihat http://www.arduino.cc/en/Guide/Troubleshooting#size untuk "
-"saran tentang menguranginya."
+msgstr ""
+"Sketsa terlalu besar; lihat http://www.arduino.cc/en/Guide/Troubleshooting#size untuk "
+"saran tentang menguranginya."
#: Sketch.java:1754
msgid "Missing the */ from the end of a /* comment */"
-msgstr "Membutuhkan */ di akhir sebuah /* komentar */"
+msgstr "Membutuhkan */ di akhir sebuah /* komentar */"
#: Sketch.java:1796
msgid "Sketch Disappeared"
-msgstr "Sketsa Hilang"
+msgstr "Sketsa Hilang"
#: Sketch.java:1797
msgid ""
@@ -922,15 +922,15 @@ msgstr ""
#: Sketch.java:1810
msgid "Could not re-save sketch"
-msgstr "Tidak dapat kembali menyimpan sketsa"
+msgstr "Tidak dapat kembali menyimpan sketsa"
#: Sketch.java:1811
msgid ""
"Could not properly re-save the sketch. You may be in trouble at this point,\n"
"and it might be time to copy and paste your code to another text editor."
-msgstr ""
-"Tidak dapat kembali menyimpan sketsa dengan benar. Anda mungkin berada dalam kesulitan pada saat ini,\n"
-"dan mungkin sudah saatnya untuk menyalin dan menyisipkan kode anda ke editor teks lain."
+msgstr ""
+"Tidak dapat kembali menyimpan sketsa dengan benar. Anda mungkin berada dalam kesulitan pada saat ini,\n"
+"dan mungkin sudah saatnya untuk menyalin dan menyisipkan kode anda ke editor teks lain."
#: Sketch.java:2060
msgid ""
@@ -941,19 +941,19 @@ msgstr ""
#: debug/Uploader.java:52
msgid "https://developer.berlios.de/bugs/?group_id=3590"
-msgstr "https://developer.berlios.de/bugs/?group_id=3590"
+msgstr "https://developer.berlios.de/bugs/?group_id=3590"
#: debug/Uploader.java:54 debug/Compiler.java:43
#, java-format
msgid "Compiler error, please submit this code to {0}"
-msgstr "Kesalahan kompilator, harap kirim kode ini ke {0}"
+msgstr "Kesalahan kompilator, harap kirim kode ini ke {0}"
#: debug/Uploader.java:199
#, java-format
msgid ""
"the selected serial port {0} does not exist or your board is not connected"
-msgstr ""
-"serial port yang dipilih {0} tidak ada atau papan anda tidak terhubung"
+msgstr ""
+"serial port yang dipilih {0} tidak ada atau papan anda tidak terhubung"
#: debug/Uploader.java:203
msgid ""
@@ -975,24 +975,24 @@ msgstr ""
#: debug/Compiler.java:41
msgid "http://code.google.com/p/arduino/issues/list"
-msgstr "http://code.google.com/p/arduino/issues/list"
+msgstr "http://code.google.com/p/arduino/issues/list"
#: debug/Compiler.java:79
msgid "No board selected; please choose a board from the Tools > Board menu."
-msgstr "Tidak ada papan yang dipilih; harap pilih sebuah papan dari menu Peralatan > Papan."
+msgstr "Tidak ada papan yang dipilih; harap pilih sebuah papan dari menu Peralatan > Papan."
#: debug/Compiler.java:422
#, java-format
msgid "{0} returned {1}"
-msgstr "{0} kembali {1}"
+msgstr "{0} kembali {1}"
#: debug/Compiler.java:426
msgid "Error compiling."
-msgstr "Kesalahan dalam menyusun."
+msgstr "Kesalahan dalam menyusun."
#: debug/Compiler.java:465
msgid "Please import the SPI library from the Sketch > Import Library menu."
-msgstr "Harap impor perpustakaan SPI dari menu Sketsa > Impor Perpustakaan."
+msgstr "Harap impor perpustakaan SPI dari menu Sketsa > Impor Perpustakaan."
#: debug/Compiler.java:466
msgid ""
@@ -1001,16 +1001,16 @@ msgid ""
"You appear to be using it or another library that depends on the SPI "
"library.\n"
"\n"
-msgstr ""
-"\n"
-"Pada Arduino 0019, perpustakaan Ethernet tergantung pada perpustakaan SPI.\n"
-"Tampaknya anda menggunakannya atau perpustakaan lain yang tergantung pada perpustakaan "
-"SPI.\n"
-"\n"
+msgstr ""
+"\n"
+"Pada Arduino 0019, perpustakaan Ethernet tergantung pada perpustakaan SPI.\n"
+"Tampaknya anda menggunakannya atau perpustakaan lain yang tergantung pada perpustakaan "
+"SPI.\n"
+"\n"
#: debug/Compiler.java:471
msgid "The 'BYTE' keyword is no longer supported."
-msgstr "Kata kunci 'BYTE' tidak lagi didukung."
+msgstr "Kata kunci 'BYTE' tidak lagi didukung."
#: debug/Compiler.java:472
msgid ""
@@ -1018,15 +1018,15 @@ msgid ""
"As of Arduino 1.0, the 'BYTE' keyword is no longer supported.\n"
"Please use Serial.write() instead.\n"
"\n"
-msgstr ""
-"\n"
-"Pada Arduino 1.0, kata kunci 'BYTE' tidak lagi didukung.\n"
-"Harap gunakan Serial.write() sebagai gantinya.\n"
-"\n"
+msgstr ""
+"\n"
+"Pada Arduino 1.0, kata kunci 'BYTE' tidak lagi didukung.\n"
+"Harap gunakan Serial.write() sebagai gantinya.\n"
+"\n"
#: debug/Compiler.java:477
msgid "The Server class has been renamed EthernetServer."
-msgstr "Kelas Server telah diubah namanya menjadi EthernetServer."
+msgstr "Kelas Server telah diubah namanya menjadi EthernetServer."
#: debug/Compiler.java:478
msgid ""
@@ -1034,15 +1034,15 @@ msgid ""
"As of Arduino 1.0, the Server class in the Ethernet library has been renamed "
"to EthernetServer.\n"
"\n"
-msgstr ""
-"\n"
-"Pada Arduino 1.0, kelas Server dalam perpustakaan Ethernet telah diubah namanya "
-"menjadi EthernetServer.\n"
-"\n"
+msgstr ""
+"\n"
+"Pada Arduino 1.0, kelas Server dalam perpustakaan Ethernet telah diubah namanya "
+"menjadi EthernetServer.\n"
+"\n"
#: debug/Compiler.java:483
msgid "The Client class has been renamed EthernetClient."
-msgstr "Kelas Client telah diubah namanya menjadi EthernetClient."
+msgstr "Kelas Client telah diubah namanya menjadi EthernetClient."
#: debug/Compiler.java:484
msgid ""
@@ -1050,15 +1050,15 @@ msgid ""
"As of Arduino 1.0, the Client class in the Ethernet library has been renamed "
"to EthernetClient.\n"
"\n"
-msgstr ""
-"\n"
-"Pada Arduino 1.0, kelas Client dalam perpustakaan Ethernet telah diubah namanya "
-"menjadi EthernetClient.\n"
-"\n"
+msgstr ""
+"\n"
+"Pada Arduino 1.0, kelas Client dalam perpustakaan Ethernet telah diubah namanya "
+"menjadi EthernetClient.\n"
+"\n"
#: debug/Compiler.java:489
msgid "The Udp class has been renamed EthernetUdp."
-msgstr "Kelas Udp telah diubah namanya menjadi EthernetUdp."
+msgstr "Kelas Udp telah diubah namanya menjadi EthernetUdp."
#: debug/Compiler.java:490
msgid ""
@@ -1066,15 +1066,15 @@ msgid ""
"As of Arduino 1.0, the Udp class in the Ethernet library has been renamed to "
"EthernetClient.\n"
"\n"
-msgstr ""
-"\n"
-"Pada Arduino 1.0, kelas Udp dalam perpustakaan Ethernet telah diubah namanya menjadi "
-"EthernetClient.\n"
-"\n"
+msgstr ""
+"\n"
+"Pada Arduino 1.0, kelas Udp dalam perpustakaan Ethernet telah diubah namanya menjadi "
+"EthernetClient.\n"
+"\n"
#: debug/Compiler.java:495
msgid "Wire.send() has been renamed Wire.write()."
-msgstr "Wire.send() telah diubah namanya menjadi Wire.write()."
+msgstr "Wire.send() telah diubah namanya menjadi Wire.write()."
#: debug/Compiler.java:496
msgid ""
@@ -1082,15 +1082,15 @@ msgid ""
"As of Arduino 1.0, the Wire.send() function was renamed to Wire.write() for "
"consistency with other libraries.\n"
"\n"
-msgstr ""
-"\n"
-"Pada Arduino 1.0, fungsi Wire.send() telah diubah namanya menjadi Wire.write() demi "
-"konsistensi dengan perpustakaan lain.\n"
-"\n"
+msgstr ""
+"\n"
+"Pada Arduino 1.0, fungsi Wire.send() telah diubah namanya menjadi Wire.write() demi "
+"konsistensi dengan perpustakaan lain.\n"
+"\n"
#: debug/Compiler.java:501
msgid "Wire.receive() has been renamed Wire.read()."
-msgstr "Wire.receive() telah diubah namanya menjadi Wire.read()."
+msgstr "Wire.receive() telah diubah namanya menjadi Wire.read()."
#: debug/Compiler.java:502
msgid ""
@@ -1098,60 +1098,60 @@ msgid ""
"As of Arduino 1.0, the Wire.receive() function was renamed to Wire.read() "
"for consistency with other libraries.\n"
"\n"
-msgstr ""
-"\n"
-"Pada Arduino 1.0, fungsi Wire.receive() telah diubah namanya menjadi Wire.read() "
-"demi konsistensi dengan perpustakaan lain.\n"
-"\n"
+msgstr ""
+"\n"
+"Pada Arduino 1.0, fungsi Wire.receive() telah diubah namanya menjadi Wire.read() "
+"demi konsistensi dengan perpustakaan lain.\n"
+"\n"
#: EditorConsole.java:152
msgid "Console Error"
-msgstr "Kesalahan Konsol"
+msgstr "Kesalahan Konsol"
#: EditorConsole.java:153
msgid ""
"A problem occurred while trying to open the\n"
"files used to store the console output."
-msgstr ""
-"Sebuah masalah muncul ketika mencoba membuka\n"
-"berkas yang digunakan untuk menyimpan keluaran konsol."
+msgstr ""
+"Sebuah masalah muncul ketika mencoba membuka\n"
+"berkas yang digunakan untuk menyimpan keluaran konsol."
#: Base.java:184
msgid "Non-fatal error while setting the Look & Feel."
-msgstr "Kesalahan tidak fatal ketika mengatur penampilan."
+msgstr "Kesalahan tidak fatal ketika mengatur penampilan."
#: Base.java:185
msgid "The error message follows, however Arduino should run fine."
-msgstr "Pesan kesalahan akan muncul, bagaimanapun Arduino akan berjalan dengan baik."
+msgstr "Pesan kesalahan akan muncul, bagaimanapun Arduino akan berjalan dengan baik."
#: Base.java:220
msgid "Problem Setting the Platform"
-msgstr "Masalah Dalam Mengatur Platform"
+msgstr "Masalah Dalam Mengatur Platform"
#: Base.java:221
msgid ""
"An unknown error occurred while trying to load\n"
"platform-specific code for your machine."
-msgstr "Kesalahan tak dikenal muncul ketika mencoba memuat \n"
-"kode spesifik platform untuk mesin anda."
+msgstr "Kesalahan tak dikenal muncul ketika mencoba memuat \n"
+"kode spesifik platform untuk mesin anda."
#: Base.java:232
msgid "Please install JDK 1.5 or later"
-msgstr "Harap pasang JDK 1.5 atau yang lebih baru"
+msgstr "Harap pasang JDK 1.5 atau yang lebih baru"
#: Base.java:233
msgid ""
"Arduino requires a full JDK (not just a JRE)\n"
"to run. Please install JDK 1.5 or later.\n"
"More information can be found in the reference."
-msgstr ""
-"Arduino membutuhkan JDK lengkap (tidak hanya JRE)\n"
-"untuk dapat berjalan. Harap pasang JDK 1.5 atau yang lebih baru.\n"
-"Informasi lebih lanjut dapat ditemukan di referensi."
+msgstr ""
+"Arduino membutuhkan JDK lengkap (tidak hanya JRE)\n"
+"untuk dapat berjalan. Harap pasang JDK 1.5 atau yang lebih baru.\n"
+"Informasi lebih lanjut dapat ditemukan di referensi."
#: Base.java:257
msgid "Sketchbook folder disappeared"
-msgstr "Map Buku Sketsa hilang"
+msgstr "Map Buku Sketsa hilang"
#: Base.java:258
msgid ""
@@ -1160,64 +1160,64 @@ msgid ""
"location, and create a new sketchbook folder if\n"
"necessary. Arduino will then stop talking about\n"
"himself in the third person."
-msgstr ""
-"Map sketsa tidak lagi ada.\n"
-"Arduino akan beralih ke lokasi buku sketsa\n"
-"standar, dan membuat sebuah map buku sketsa baru jika\n"
-"diperlukan. Arduino kemudian akan berhenti berbicara tentang\n"
-"dirinya sendiri dari sudut orang ketiga."
+msgstr ""
+"Map sketsa tidak lagi ada.\n"
+"Arduino akan beralih ke lokasi buku sketsa\n"
+"standar, dan membuat sebuah map buku sketsa baru jika\n"
+"diperlukan. Arduino kemudian akan berhenti berbicara tentang\n"
+"dirinya sendiri dari sudut orang ketiga."
#: Base.java:532
msgid "Time for a Break"
-msgstr "Waktu untuk Istirahat"
+msgstr "Waktu untuk Istirahat"
#: Base.java:533
msgid ""
"You've reached the limit for auto naming of new sketches\n"
"for the day. How about going for a walk instead?"
-msgstr ""
-"Anda telah mencapai batas pemberian nama otomatis sketsa baru\n"
-"untuk hari ini. Bagaimana jika anda pergi jalan-jalan sebagai gantinya?"
+msgstr ""
+"Anda telah mencapai batas pemberian nama otomatis sketsa baru\n"
+"untuk hari ini. Bagaimana jika anda pergi jalan-jalan sebagai gantinya?"
#: Base.java:537
msgid "Sunshine"
-msgstr "Cuaca cerah"
+msgstr "Cuaca cerah"
#: Base.java:538
msgid "No really, time for some fresh air for you."
-msgstr "Sungguh, sekarang waktunya anda menghirup udara segar."
+msgstr "Sungguh, sekarang waktunya anda menghirup udara segar."
#: Base.java:633
msgid "Open an Arduino sketch..."
-msgstr "Buka sebuah sketsa Arduino..."
+msgstr "Buka sebuah sketsa Arduino..."
#: Base.java:772
msgid ""
"
Are you "
"sure you want to Quit?
Closing the last open sketch will quit Arduino."
-msgstr ""
-"
Apakah anda \n"
-"yakin ingin berhenti?
Menutup sketsa aktif yang terakhir akan menghentikan Arduino."
+msgstr ""
+"
Apakah anda \n"
+"yakin ingin berhenti?
Menutup sketsa aktif yang terakhir akan menghentikan Arduino."
#: Base.java:970
msgid "Contributed"
-msgstr "Dikontribusikan"
+msgstr "Dikontribusikan"
#: Base.java:1095
msgid "Sketch Does Not Exist"
-msgstr "Sketsa Tidak Ada"
+msgstr "Sketsa Tidak Ada"
#: Base.java:1096
msgid ""
"The selected sketch no longer exists.\n"
"You may need to restart Arduino to update\n"
"the sketchbook menu."
-msgstr ""
-"Sketsa yang dipilih tidak lagi ada.\n"
-"Anda mungkin perlu memulai ulang Arduino untuk memperbaharui\n"
-"menu buku sketsa."
+msgstr ""
+"Sketsa yang dipilih tidak lagi ada.\n"
+"Anda mungkin perlu memulai ulang Arduino untuk memperbaharui\n"
+"menu buku sketsa."
#: Base.java:1125
#, java-format
@@ -1227,16 +1227,16 @@ msgid ""
"(ASCII-only with no spaces, and it cannot start with a number).\n"
"To get rid of this message, remove the sketch from\n"
"{1}"
-msgstr ""
-"Sketsa \"{0}\" tidak dapat digunakan.\n"
-"Nama sketsa hanya dapat terdiri dari huruf dan angka dasar\n"
-"(hanya ASCII tanpa spasi, dan tidak dapat diawali dengan sebuah angka).\n"
-"Untuk menghilangkan pesan ini, hapus sketsa dari\n"
-"{1}"
+msgstr ""
+"Sketsa \"{0}\" tidak dapat digunakan.\n"
+"Nama sketsa hanya dapat terdiri dari huruf dan angka dasar\n"
+"(hanya ASCII tanpa spasi, dan tidak dapat diawali dengan sebuah angka).\n"
+"Untuk menghilangkan pesan ini, hapus sketsa dari\n"
+"{1}"
#: Base.java:1132
msgid "Ignoring sketch with bad name"
-msgstr "Mengabaikan sketsa dengan nama buruk"
+msgstr "Mengabaikan sketsa dengan nama buruk"
#: Base.java:1202
#, java-format
@@ -1244,193 +1244,193 @@ msgid ""
"The library \"{0}\" cannot be used.\n"
"Library names must contain only basic letters and numbers.\n"
"(ASCII only and no spaces, and it cannot start with a number)"
-msgstr ""
-"Perpustakaan \"{0}\" tidak dapat digunakan.\n"
-"Nama perpustakaan hanya dapat terdiri dari huruf dan angka dasar.\n"
-"(hanya ASCII dan tanpa spasi, dan tidak dapat diawali dengan sebuah angka).\n"
+msgstr ""
+"Perpustakaan \"{0}\" tidak dapat digunakan.\n"
+"Nama perpustakaan hanya dapat terdiri dari huruf dan angka dasar.\n"
+"(hanya ASCII dan tanpa spasi, dan tidak dapat diawali dengan sebuah angka).\n"
#: Base.java:1207
msgid "Ignoring bad library name"
-msgstr "Mengabaikan nama perpustakaan buruk"
+msgstr "Mengabaikan nama perpustakaan buruk"
#: Base.java:1432
msgid "Problem getting data folder"
-msgstr "Masalah dalam mendapatkan map data"
+msgstr "Masalah dalam mendapatkan map data"
#: Base.java:1433
msgid "Error getting the Arduino data folder."
-msgstr "Kesalahan dalam mendapatkan map data Arduino."
+msgstr "Kesalahan dalam mendapatkan map data Arduino."
#: Base.java:1440
msgid "Settings issues"
-msgstr "Masalah pengaturan"
+msgstr "Masalah pengaturan"
#: Base.java:1441
msgid ""
"Arduino cannot run because it could not\n"
"create a folder to store your settings."
-msgstr ""
-"Arduino tidak dapat berfungsi karena tidak bisa\n"
-"membuat sebuah map untuk menyimpan pengaturan anda."
+msgstr ""
+"Arduino tidak dapat berfungsi karena tidak bisa\n"
+"membuat sebuah map untuk menyimpan pengaturan anda."
#: Base.java:1602
msgid "You forgot your sketchbook"
-msgstr "Anda melupakan buku sketsa anda"
+msgstr "Anda melupakan buku sketsa anda"
#: Base.java:1603
msgid ""
"Arduino cannot run because it could not\n"
"create a folder to store your sketchbook."
-msgstr ""
-"Arduino tidak dapat berjalan karena tidak bisa\n"
-"membuat sebuah map untuk menyimpan buku sketsa anda."
+msgstr ""
+"Arduino tidak dapat berjalan karena tidak bisa\n"
+"membuat sebuah map untuk menyimpan buku sketsa anda."
#: Base.java:1623
msgid "Select (or create new) folder for sketches..."
-msgstr "Pilih (atau buat baru) map untuk sketsa..."
+msgstr "Pilih (atau buat baru) map untuk sketsa..."
#: Base.java:1647
msgid "Problem Opening URL"
-msgstr "Masalah Dalam Membuka URL"
+msgstr "Masalah Dalam Membuka URL"
#: Base.java:1648
#, java-format
msgid ""
"Could not open the URL\n"
"{0}"
-msgstr ""
-"Tidak dapat membuka URL\n"
-"{0}"
+msgstr ""
+"Tidak dapat membuka URL\n"
+"{0}"
#: Base.java:1671
msgid "Problem Opening Folder"
-msgstr "Masalah Dalam Membuka Map"
+msgstr "Masalah Dalam Membuka Map"
#: Base.java:1672
#, java-format
msgid ""
"Could not open the folder\n"
"{0}"
-msgstr ""
-"Tidak dapat membuka map\n"
-"{0}"
+msgstr ""
+"Tidak dapat membuka map\n"
+"{0}"
#: Base.java:1785
msgid "Guide_MacOSX.html"
-msgstr "Guide_MacOSX.html"
+msgstr "Guide_MacOSX.html"
#: Base.java:1787
msgid "Guide_Windows.html"
-msgstr "Guide_Windows.html"
+msgstr "Guide_Windows.html"
#: Base.java:1789
msgid "http://www.arduino.cc/playground/Learning/Linux"
-msgstr "http://www.arduino.cc/playground/Learning/Linux"
+msgstr "http://www.arduino.cc/playground/Learning/Linux"
#: Base.java:1794
msgid "index.html"
-msgstr "index.html"
+msgstr "index.html"
#: Base.java:1799
msgid "Guide_Environment.html"
-msgstr "Guide_Environment.html"
+msgstr "Guide_Environment.html"
#: Base.java:1804
msgid "environment"
-msgstr "lingkungan"
+msgstr "lingkungan"
#: Base.java:1804
msgid "platforms.html"
-msgstr "platforms.html"
+msgstr "platforms.html"
#: Base.java:1809
msgid "Guide_Troubleshooting.html"
-msgstr "Guide_Troubleshooting.html"
+msgstr "Guide_Troubleshooting.html"
#: Base.java:1814
msgid "FAQ.html"
-msgstr "FAQ.html"
+msgstr "FAQ.html"
#: Base.java:1826
msgid "Message"
-msgstr "Pesan"
+msgstr "Pesan"
#: Base.java:1842
msgid "Warning"
-msgstr "Peringatan"
+msgstr "Peringatan"
#: Base.java:2196
#, java-format
msgid "Could not remove old version of {0}"
-msgstr "Tidak dapat menghilangkan versi lama {0}"
+msgstr "Tidak dapat menghilangkan versi lama {0}"
#: Base.java:2206
#, java-format
msgid "Could not replace {0}"
-msgstr "Tidak dapat menggantikan {0}"
+msgstr "Tidak dapat menggantikan {0}"
#: Base.java:2247 Base.java:2270
#, java-format
msgid "Could not delete {0}"
-msgstr "Tidak dapat menghapus {0}"
+msgstr "Tidak dapat menghapus {0}"
#: EditorHeader.java:292
msgid "New Tab"
-msgstr "Label Baru"
+msgstr "Label Baru"
#: EditorHeader.java:300
msgid "Rename"
-msgstr "Ubah Nama"
+msgstr "Ubah Nama"
#: EditorHeader.java:326
msgid "Previous Tab"
-msgstr "Label Sebelumnya"
+msgstr "Label Sebelumnya"
#: EditorHeader.java:340
msgid "Next Tab"
-msgstr "Label Berikutnya"
+msgstr "Label Berikutnya"
#: EditorToolbar.java:41 EditorToolbar.java:46
msgid "Verify"
-msgstr "Periksa"
+msgstr "Periksa"
#: EditorToolbar.java:41
msgid "Open"
-msgstr "Buka"
+msgstr "Buka"
#: EditorToolbar.java:46
msgid "New Editor Window"
-msgstr "Jendela Editor Baru"
+msgstr "Jendela Editor Baru"
#: EditorToolbar.java:46
msgid "Open in Another Window"
-msgstr "Buka di Jendela Lain"
+msgstr "Buka di Jendela Lain"
#: Platform.java:167
msgid "No launcher available"
-msgstr "Tidak ada peluncur yang tersedia"
+msgstr "Tidak ada peluncur yang tersedia"
#: Platform.java:168
msgid ""
"Unspecified platform, no launcher available.\n"
"To enable opening URLs or folders, add a \n"
"\"launcher=/path/to/app\" line to preferences.txt"
-msgstr ""
-"Platform tanpa spesifikasi, tidak ada peluncur yang tersedia.\n"
-"Untuk mengaktifkan pembukaan URL atau map, tambahkan sebuah baris \n"
-"\"launcher=/path/to/app\" ke preferences.txt"
+msgstr ""
+"Platform tanpa spesifikasi, tidak ada peluncur yang tersedia.\n"
+"Untuk mengaktifkan pembukaan URL atau map, tambahkan sebuah baris \n"
+"\"launcher=/path/to/app\" ke preferences.txt"
#: Theme.java:52
msgid ""
"Could not read color theme settings.\n"
"You'll need to reinstall Processing."
-msgstr ""
-"Tidak dapat membaca pengaturan tema warna."
-"Anda harus memasang ulang Processing."
+msgstr ""
+"Tidak dapat membaca pengaturan tema warna."
+"Anda harus memasang ulang Processing."
#: Preferences.java:80
msgid "Browse"
-msgstr "Navigasi"
+msgstr "Navigasi"
#: Preferences.java:83
msgid "System Default"
@@ -1446,11 +1446,11 @@ msgstr ""
#: Preferences.java:86
msgid "Catalan"
-msgstr "Bahasa Katalan"
+msgstr "Bahasa Katalan"
#: Preferences.java:87
msgid "Chinese Simplified"
-msgstr "Bahasa Cina Sederhana"
+msgstr "Bahasa Cina Sederhana"
#: Preferences.java:88
msgid "Chinese Traditional"
@@ -1458,15 +1458,15 @@ msgstr ""
#: Preferences.java:89
msgid "Danish"
-msgstr "Bahasa Denmark"
+msgstr "Bahasa Denmark"
#: Preferences.java:90
msgid "Dutch"
-msgstr "Bahasa Belanda"
+msgstr "Bahasa Belanda"
#: Preferences.java:91
msgid "English"
-msgstr "Bahasa Inggris"
+msgstr "Bahasa Inggris"
#: Preferences.java:92
msgid "Estonian"
@@ -1474,27 +1474,27 @@ msgstr ""
#: Preferences.java:93
msgid "French"
-msgstr "Bahasa Perancis"
+msgstr "Bahasa Perancis"
#: Preferences.java:94
msgid "Filipino"
-msgstr "Bahasa Filipina"
+msgstr "Bahasa Filipina"
#: Preferences.java:95
msgid "Galician"
-msgstr "Bahasa Galisia"
+msgstr "Bahasa Galisia"
#: Preferences.java:96
msgid "German"
-msgstr "Bahasa Jerman"
+msgstr "Bahasa Jerman"
#: Preferences.java:97
msgid "Greek"
-msgstr "Bahasa Yunani"
+msgstr "Bahasa Yunani"
#: Preferences.java:98
msgid "Hungarian"
-msgstr "Bahasa Hungaria"
+msgstr "Bahasa Hungaria"
#: Preferences.java:99
msgid "Indonesian"
@@ -1502,11 +1502,11 @@ msgstr ""
#: Preferences.java:100
msgid "Italian"
-msgstr "Bahasa Italia"
+msgstr "Bahasa Italia"
#: Preferences.java:101
msgid "Japanese"
-msgstr "Bahasa Jepang"
+msgstr "Bahasa Jepang"
#: Preferences.java:102
msgid "Korean"
@@ -1514,7 +1514,7 @@ msgstr ""
#: Preferences.java:103
msgid "Latvian"
-msgstr "Bahasa Latvia"
+msgstr "Bahasa Latvia"
#: Preferences.java:104
msgid "Lithuaninan"
@@ -1522,7 +1522,7 @@ msgstr ""
#: Preferences.java:105
msgid "Persian"
-msgstr "Bahasa Persia"
+msgstr "Bahasa Persia"
#: Preferences.java:106
msgid "Polish"
@@ -1534,7 +1534,7 @@ msgstr ""
#: Preferences.java:109
msgid "Romanian"
-msgstr "Bahasa Rumania"
+msgstr "Bahasa Rumania"
#: Preferences.java:110
msgid "Russian"
@@ -1542,41 +1542,41 @@ msgstr ""
#: Preferences.java:111
msgid "Spanish"
-msgstr "Bahasa Spanyol"
+msgstr "Bahasa Spanyol"
#: Preferences.java:210
msgid ""
"Could not read default settings.\n"
"You'll need to reinstall Arduino."
-msgstr ""
-"Tidak dapat membaca pengaturan standar.\n"
-"Anda harus memasang ulang Arduino."
+msgstr ""
+"Tidak dapat membaca pengaturan standar.\n"
+"Anda harus memasang ulang Arduino."
#: Preferences.java:242
#, java-format
msgid "Could not read preferences from {0}"
-msgstr "Tidak dapat membaca preferensi dari {0}"
+msgstr "Tidak dapat membaca preferensi dari {0}"
#: Preferences.java:261
msgid "Error reading preferences"
-msgstr "Kesalahan dalam membaca preferensi"
+msgstr "Kesalahan dalam membaca preferensi"
#: Preferences.java:263
#, java-format
msgid ""
"Error reading the preferences file. Please delete (or move)\n"
"{0} and restart Arduino."
-msgstr ""
-"Kesalahan dalam membaca berkas preferensi. Harap hapus (atau pindahkan)\n"
-"{0} dan mulai ulang Arduino."
+msgstr ""
+"Kesalahan dalam membaca berkas preferensi. Harap hapus (atau pindahkan)\n"
+"{0} dan mulai ulang Arduino."
#: Preferences.java:299
msgid "Sketchbook location:"
-msgstr "Lokasi buku sketsa:"
+msgstr "Lokasi buku sketsa:"
#: Preferences.java:314
msgid "Select new sketchbook location"
-msgstr "Pilih lokasi buku sketsa baru"
+msgstr "Pilih lokasi buku sketsa baru"
#: Preferences.java:337
msgid "Editor language: "
@@ -1588,49 +1588,49 @@ msgstr ""
#: Preferences.java:354
msgid "Editor font size: "
-msgstr "Editor ukuran huruf: "
+msgstr "Editor ukuran huruf: "
#: Preferences.java:371
msgid "Show verbose output during: "
-msgstr "Tampilkan keluaran yang berlebihan ketika: "
+msgstr "Tampilkan keluaran yang berlebihan ketika: "
#: Preferences.java:373
msgid "compilation "
-msgstr "susunan "
+msgstr "susunan "
#: Preferences.java:375
msgid "upload"
-msgstr "unggah"
+msgstr "unggah"
#: Preferences.java:384
msgid "Verify code after upload"
-msgstr "Periksa kode setelah unggah"
+msgstr "Periksa kode setelah unggah"
#: Preferences.java:393
msgid "Use external editor"
-msgstr "Gunakan editor eksternal"
+msgstr "Gunakan editor eksternal"
#: Preferences.java:403
msgid "Check for updates on startup"
-msgstr "Periksa pembaruan ketika program dimulai"
+msgstr "Periksa pembaruan ketika program dimulai"
#: Preferences.java:412
msgid "Update sketch files to new extension on save (.pde -> .ino)"
-msgstr "Perbaharui berkas sketsa ke ekstensi baru ketika menyimpan (.pde -> .ino)"
+msgstr "Perbaharui berkas sketsa ke ekstensi baru ketika menyimpan (.pde -> .ino)"
#: Preferences.java:423
msgid "Automatically associate .ino files with Arduino"
-msgstr "Asosiasikan otomatis berkas .ino dengan Arduino"
+msgstr "Asosiasikan otomatis berkas .ino dengan Arduino"
#: Preferences.java:433
msgid "More preferences can be edited directly in the file"
-msgstr "Preferensi lebih lanjut dapat diedit langsung pada berkas"
+msgstr "Preferensi lebih lanjut dapat diedit langsung pada berkas"
#: Preferences.java:462
msgid "(edit only when Arduino is not running)"
-msgstr "(mengedit hanya ketika Arduino sedang tidak berjalan)"
+msgstr "(mengedit hanya ketika Arduino sedang tidak berjalan)"
#: Preferences.java:609
#, java-format
msgid "ignoring invalid font size {0}"
-msgstr "mengabaikan ukuran huruf tidak sah {0}"
+msgstr "mengabaikan ukuran huruf tidak sah {0}"
diff --git a/app/src/processing/app/i18n/Resources_id.properties b/app/src/processing/app/i18n/Resources_id.properties
index b3fb63e3c2d..8114781e8b8 100644
--- a/app/src/processing/app/i18n/Resources_id.properties
+++ b/app/src/processing/app/i18n/Resources_id.properties
@@ -1,8 +1,8 @@
-# Indonesian translations for the Arduino IDE.
-# Copyright (C) 2012
-# This file is distributed under the same license as the Arduino IDE package.
-# Rininta Andari , 2012.
-#
+# Indonesian translations for the Arduino IDE.
+# Copyright (C) 2012
+# This file is distributed under the same license as the Arduino IDE package.
+# Rininta Andari , 2012.
+#
!=Project-Id-Version\: PACKAGE VERSION\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-04-02 18\:10+0100\nPO-Revision-Date\: 2012-04-15 23\:20+0100\nLast-Translator\: Rininta Andari \nLanguage-Team\: Indonesian\nLanguage\: id\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n
#: Editor.java:366
diff --git a/app/src/processing/app/i18n/Resources_mr.po b/app/src/processing/app/i18n/Resources_mr.po
index 05878a9ca5f..c0047286d21 100644
--- a/app/src/processing/app/i18n/Resources_mr.po
+++ b/app/src/processing/app/i18n/Resources_mr.po
@@ -1,278 +1,278 @@
-# Marathi translations for PACKAGE package.
-# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# Sarvesh S. Karkhanis <>, 2012.
-#
+# Marathi translations for PACKAGE package.
+# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Sarvesh S. Karkhanis <>, 2012.
+#
msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-04-04 10:24-0400\n"
-"PO-Revision-Date: 2012-04-04 13:24-0400\n"
-"Last-Translator: Sarvesh S. Karkhanis <>\n"
-"Language-Team: \n"
-"Language: mr\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-04-04 10:24-0400\n"
+"PO-Revision-Date: 2012-04-04 13:24-0400\n"
+"Last-Translator: Sarvesh S. Karkhanis <>\n"
+"Language-Team: \n"
+"Language: mr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: Editor.java:366
msgid "No files were added to the sketch."
-msgstr "स्केच मध्ये फाईल सामील नाही."
+msgstr "स्केच मध्ये फाईल सामील नाही."
#: Editor.java:369 Sketch.java:996
msgid "One file added to the sketch."
-msgstr "स्केच मध्ये एक फाईल सामील केली"
+msgstr "स्केच मध्ये एक फाईल सामील केली"
#: Editor.java:373
#, java-format
msgid "{0} files added to the sketch."
-msgstr "फाईल्स स्केच मध्ये सामील केल्या"
+msgstr "फाईल्स स्केच मध्ये सामील केल्या"
#: Editor.java:484
msgid "File"
-msgstr "फाईल"
+msgstr "फाईल"
#: Editor.java:486 EditorToolbar.java:41
msgid "New"
-msgstr "नवीन"
+msgstr "नवीन"
#: Editor.java:494 Base.java:903
msgid "Open..."
-msgstr "उघडा..."
+msgstr "उघडा..."
#: Editor.java:503
msgid "Sketchbook"
-msgstr "स्केच पुस्तिका"
+msgstr "स्केच पुस्तिका"
#: Editor.java:509
msgid "Examples"
-msgstr "उदाहरणे"
+msgstr "उदाहरणे"
#: Editor.java:514 Editor.java:1977
msgid "Close"
-msgstr "पण बंद करा"
+msgstr "पण बंद करा"
#: Editor.java:522 Editor.java:2017 Editor.java:2421 EditorToolbar.java:41
#: EditorToolbar.java:46
msgid "Save"
-msgstr "जतन करा"
+msgstr "जतन करा"
#: Editor.java:530
msgid "Save As..."
-msgstr "जतन करा असे की..."
+msgstr "जतन करा असे की..."
#: Editor.java:538 EditorToolbar.java:41
msgid "Upload"
-msgstr "अपलोड"
+msgstr "अपलोड"
#: Editor.java:546 EditorToolbar.java:46
msgid "Upload Using Programmer"
-msgstr "प्रोग्रॅमरच्या सहाय्याने अपलोड"
+msgstr "प्रोग्रॅमरच्या सहाय्याने अपलोड"
#: Editor.java:556
msgid "Page Setup"
-msgstr "पानाचा नमुना"
+msgstr "पानाचा नमुना"
#: Editor.java:564
msgid "Print"
-msgstr "छापा"
+msgstr "छापा"
#: Editor.java:576 Preferences.java:279
msgid "Preferences"
-msgstr "प्राधान्य"
+msgstr "प्राधान्य"
#: Editor.java:586 Base.java:782
msgid "Quit"
-msgstr "बंद"
+msgstr "बंद"
#: Editor.java:600
msgid "Sketch"
-msgstr "स्केच"
+msgstr "स्केच"
#: Editor.java:602
msgid "Verify / Compile"
-msgstr "पडताळणी / कंपाइल"
+msgstr "पडताळणी / कंपाइल"
#: Editor.java:629
msgid "Import Library..."
-msgstr "लायब्ररीची आयात..."
+msgstr "लायब्ररीची आयात..."
#: Editor.java:634
msgid "Show Sketch Folder"
-msgstr "स्केचचा फोल्डर उघडा"
+msgstr "स्केचचा फोल्डर उघडा"
#: Editor.java:643
msgid "Add File..."
-msgstr "फाईल सामील करा"
+msgstr "फाईल सामील करा"
#: Editor.java:656
msgid "Tools"
-msgstr "साधने"
+msgstr "साधने"
#: Editor.java:662 EditorToolbar.java:41 EditorToolbar.java:46
msgid "Serial Monitor"
-msgstr "सिरीयल नियंत्रक"
+msgstr "सिरीयल नियंत्रक"
#: Editor.java:682
msgid "Board"
-msgstr "बोर्ड"
+msgstr "बोर्ड"
#: Editor.java:690
msgid "Serial Port"
-msgstr "सिरीयल पोर्ट"
+msgstr "सिरीयल पोर्ट"
#: Editor.java:695
msgid "Programmer"
-msgstr "प्रोग्रॅमर"
+msgstr "प्रोग्रॅमर"
#: Editor.java:699
msgid "Burn Bootloader"
-msgstr "बूटलोडर टाका"
+msgstr "बूटलोडर टाका"
#: Editor.java:923
msgid "serialMenu is null"
-msgstr "सिरिअल मेनू रिक्त आहे"
+msgstr "सिरिअल मेनू रिक्त आहे"
#: Editor.java:927 Editor.java:934
msgid "name is null"
-msgstr "नाव रिक्त आहे"
+msgstr "नाव रिक्त आहे"
#: Editor.java:986
msgid "error retrieving port list"
-msgstr "पोर्टची यादी शिधाण्यात दोष"
+msgstr "पोर्टची यादी शिधाण्यात दोष"
#: Editor.java:1002
msgid "Help"
-msgstr "मदत"
+msgstr "मदत"
#: Editor.java:1041
msgid "Getting Started"
-msgstr "सुरुवात करताना"
+msgstr "सुरुवात करताना"
#: Editor.java:1049
msgid "Environment"
-msgstr "परिसर"
+msgstr "परिसर"
#: Editor.java:1057
msgid "Troubleshooting"
-msgstr "अडचणी सोडविणे"
+msgstr "अडचणी सोडविणे"
#: Editor.java:1065
msgid "Reference"
-msgstr "संदर्भ"
+msgstr "संदर्भ"
#: Editor.java:1073 Editor.java:2728
msgid "Find in Reference"
-msgstr "संदर्भ शोध"
+msgstr "संदर्भ शोध"
#: Editor.java:1083
msgid "Frequently Asked Questions"
-msgstr "नेहमी विचारले जाणारे प्रश्न"
+msgstr "नेहमी विचारले जाणारे प्रश्न"
#: Editor.java:1091
msgid "Visit Arduino.cc"
-msgstr "arduino.cc ला भेट द्या"
+msgstr "arduino.cc ला भेट द्या"
#: Editor.java:1094
msgid "http://arduino.cc/"
-msgstr ""
+msgstr ""
#: Editor.java:1102
msgid "About Arduino"
-msgstr "अर्दुईनो संबंधी"
+msgstr "अर्दुईनो संबंधी"
#: Editor.java:1116
msgid "Edit"
-msgstr "संपादन"
+msgstr "संपादन"
#: Editor.java:1119 Editor.java:1341
msgid "Undo"
-msgstr "एक पाउल मागे"
+msgstr "एक पाउल मागे"
#: Editor.java:1124 Editor.java:1126 Editor.java:1376
msgid "Redo"
-msgstr "एक पाउल पुढे"
+msgstr "एक पाउल पुढे"
#: Editor.java:1135 Editor.java:2652
msgid "Cut"
-msgstr "कट"
+msgstr "कट"
#: Editor.java:1143 Editor.java:2660
msgid "Copy"
-msgstr "कॉपी"
+msgstr "कॉपी"
#: Editor.java:1151 Editor.java:2668
msgid "Copy for Forum"
-msgstr "फोरम साठी कॉपी करा"
+msgstr "फोरम साठी कॉपी करा"
#: Editor.java:1163 Editor.java:2676
msgid "Copy as HTML"
-msgstr "HTML कॉपी करा"
+msgstr "HTML कॉपी करा"
#: Editor.java:1175 Editor.java:2684
msgid "Paste"
-msgstr "पेस्ट"
+msgstr "पेस्ट"
#: Editor.java:1184 Editor.java:2692
msgid "Select All"
-msgstr "सर्व निवडा"
+msgstr "सर्व निवडा"
#: Editor.java:1194 Editor.java:2702
msgid "Comment/Uncomment"
-msgstr "टिपणी करा / टिपणी काढा"
+msgstr "टिपणी करा / टिपणी काढा"
#: Editor.java:1202 Editor.java:2710
msgid "Increase Indent"
-msgstr "अंतर वाढवा"
+msgstr "अंतर वाढवा"
#: Editor.java:1210 Editor.java:2718
msgid "Decrease Indent"
-msgstr "अंतर कमी करा"
+msgstr "अंतर कमी करा"
#: Editor.java:1220
msgid "Find..."
-msgstr "शोध"
+msgstr "शोध"
#: Editor.java:1235
msgid "Find Next"
-msgstr "पुढे शोधा"
+msgstr "पुढे शोधा"
#: Editor.java:1245
msgid "Find Previous"
-msgstr "मागे शोधा"
+msgstr "मागे शोधा"
#: Editor.java:1255
msgid "Use Selection For Find"
-msgstr "ठळक केलेल्यामध्ये शिधा"
+msgstr "ठळक केलेल्यामध्ये शिधा"
#: Editor.java:1816
msgid "First select a word to find in the reference."
-msgstr "संदर्भ शोधण्यासाठी प्रथम शब्द निवडा"
+msgstr "संदर्भ शोधण्यासाठी प्रथम शब्द निवडा"
#: Editor.java:1823
#, java-format
msgid "No reference available for \"{0}\""
-msgstr "साठी संदर्भ उपलब्ध नाही"
+msgstr "साठी संदर्भ उपलब्ध नाही"
#: Editor.java:1826
#, java-format
msgid "{0}.html"
-msgstr ""
+msgstr ""
#: Editor.java:1843 Sketch.java:1647
msgid "Compiling sketch..."
-msgstr "स्केचचे कंपाइलिंग सुरु आहे..."
+msgstr "स्केचचे कंपाइलिंग सुरु आहे..."
#: Editor.java:1864 Editor.java:1881
msgid "Done compiling."
-msgstr "कंपाइलिंग पूर्ण"
+msgstr "कंपाइलिंग पूर्ण"
#: Editor.java:1973
#, java-format
msgid "Save changes to \"{0}\"? "
-msgstr "येथे बदल जतन करा"
+msgstr "येथे बदल जतन करा"
#: Editor.java:2006
msgid ""
@@ -280,31 +280,31 @@ msgid ""
"{ font: 11pt \"Lucida Grande\"; margin-top: 8px } Do you "
"want to save changes to this sketch before closing?
If you don't "
"save, your changes will be lost."
-msgstr ""
+msgstr ""
#: Editor.java:2017 Editor.java:2098 Editor.java:2418 Sketch.java:589
#: Sketch.java:741 Sketch.java:1046 Preferences.java:78
msgid "Cancel"
-msgstr ""
+msgstr ""
#: Editor.java:2017
msgid "Don't Save"
-msgstr ""
+msgstr ""
#: Editor.java:2089
msgid "Bad file selected"
-msgstr ""
+msgstr ""
#: Editor.java:2090
msgid ""
"Processing can only open its own sketches\n"
"and other files ending in .ino or .pde"
-msgstr ""
+msgstr ""
#: Editor.java:2098 Editor.java:2418 Sketch.java:589 Sketch.java:741
#: Sketch.java:1046 Preferences.java:79
msgid "OK"
-msgstr ""
+msgstr ""
#: Editor.java:2100
#, java-format
@@ -312,311 +312,311 @@ msgid ""
"The file \"{0}\" needs to be inside\n"
"a sketch folder named \"{1}\".\n"
"Create this folder, move the file, and continue?"
-msgstr ""
+msgstr ""
#: Editor.java:2109
msgid "Moving"
-msgstr ""
+msgstr ""
#: Editor.java:2120 Editor.java:2131 Editor.java:2141 Editor.java:2159
#: Sketch.java:479 Sketch.java:485 Sketch.java:500 Sketch.java:507
#: Sketch.java:530 Sketch.java:547 Base.java:1861 Preferences.java:240
msgid "Error"
-msgstr ""
+msgstr ""
#: Editor.java:2122
#, java-format
msgid "A folder named \"{0}\" already exists. Can't open sketch."
-msgstr ""
+msgstr ""
#: Editor.java:2132
msgid "Could not create the sketch folder."
-msgstr ""
+msgstr ""
#: Editor.java:2141
msgid "Could not copy to a proper location."
-msgstr ""
+msgstr ""
#: Editor.java:2159
msgid "Could not create the sketch."
-msgstr ""
+msgstr ""
#: Editor.java:2166
#, java-format
msgid "{0} | Arduino {1}"
-msgstr ""
+msgstr ""
#: Editor.java:2223 Editor.java:2261
msgid "Saving..."
-msgstr ""
+msgstr ""
#: Editor.java:2228 Editor.java:2264
msgid "Done Saving."
-msgstr ""
+msgstr ""
#: Editor.java:2270
msgid "Save Canceled."
-msgstr ""
+msgstr ""
#: Editor.java:2296
#, java-format
msgid ""
"Serial port {0} not found.\n"
"Retry the upload with another serial port?"
-msgstr ""
+msgstr ""
#: Editor.java:2331
msgid "Uploading to I/O Board..."
-msgstr ""
+msgstr ""
#: Editor.java:2348 Editor.java:2384
msgid "Done uploading."
-msgstr ""
+msgstr ""
#: Editor.java:2356 Editor.java:2392
msgid "Upload canceled."
-msgstr ""
+msgstr ""
#: Editor.java:2420
msgid "Save changes before export?"
-msgstr ""
+msgstr ""
#: Editor.java:2435
msgid "Export canceled, changes must first be saved."
-msgstr ""
+msgstr ""
#: Editor.java:2457
msgid "Burning bootloader to I/O Board (this may take a minute)..."
-msgstr ""
+msgstr ""
#: Editor.java:2463
msgid "Done burning bootloader."
-msgstr ""
+msgstr ""
#: Editor.java:2465 Editor.java:2469 Editor.java:2473
msgid "Error while burning bootloader."
-msgstr ""
+msgstr ""
#: Editor.java:2500
msgid "Printing..."
-msgstr ""
+msgstr ""
#: Editor.java:2517
msgid "Done printing."
-msgstr ""
+msgstr ""
#: Editor.java:2520
msgid "Error while printing."
-msgstr ""
+msgstr ""
#: Editor.java:2524
msgid "Printing canceled."
-msgstr ""
+msgstr ""
#: Editor.java:2572
#, java-format
msgid "Bad error line: {0}"
-msgstr ""
+msgstr ""
#: Editor.java:2641
msgid "Open URL"
-msgstr ""
+msgstr ""
#: UpdateCheck.java:53
msgid "http://www.arduino.cc/latest.txt"
-msgstr ""
+msgstr ""
#: UpdateCheck.java:103
msgid ""
"A new version of Arduino is available,\n"
"would you like to visit the Arduino download page?"
-msgstr ""
+msgstr ""
#: UpdateCheck.java:108 Preferences.java:76
msgid "Yes"
-msgstr ""
+msgstr ""
#: UpdateCheck.java:108 Preferences.java:77
msgid "No"
-msgstr ""
+msgstr ""
#: UpdateCheck.java:111
msgid "Update"
-msgstr ""
+msgstr ""
#: UpdateCheck.java:118
msgid "http://www.arduino.cc/en/Main/Software"
-msgstr ""
+msgstr ""
#: FindReplace.java:80
msgid "Find:"
-msgstr ""
+msgstr ""
#: FindReplace.java:81
msgid "Replace with:"
-msgstr ""
+msgstr ""
#: FindReplace.java:96
msgid "Ignore Case"
-msgstr ""
+msgstr ""
#: FindReplace.java:105
msgid "Wrap Around"
-msgstr ""
+msgstr ""
#: FindReplace.java:120 FindReplace.java:131
msgid "Replace All"
-msgstr ""
+msgstr ""
#: FindReplace.java:121 FindReplace.java:130 Sketch.java:1050
msgid "Replace"
-msgstr ""
+msgstr ""
#: FindReplace.java:122 FindReplace.java:129
msgid "Replace & Find"
-msgstr ""
+msgstr ""
#: FindReplace.java:123 FindReplace.java:128
msgid "Previous"
-msgstr ""
+msgstr ""
#: FindReplace.java:124 FindReplace.java:127
msgid "Find"
-msgstr ""
+msgstr ""
#: SerialMonitor.java:93
msgid "Send"
-msgstr ""
+msgstr ""
#: SerialMonitor.java:110
msgid "Autoscroll"
-msgstr ""
+msgstr ""
#: SerialMonitor.java:112
msgid "No line ending"
-msgstr ""
+msgstr ""
#: SerialMonitor.java:112
msgid "Newline"
-msgstr ""
+msgstr ""
#: SerialMonitor.java:112
msgid "Carriage return"
-msgstr ""
+msgstr ""
#: SerialMonitor.java:112
msgid "Both NL & CR"
-msgstr ""
+msgstr ""
#: SerialMonitor.java:130 SerialMonitor.java:133
msgid " baud"
-msgstr ""
+msgstr ""
#: Serial.java:147
#, java-format
msgid ""
"Serial port ''{0}'' already in use. Try quiting any programs that may be "
"using it."
-msgstr ""
+msgstr ""
#: Serial.java:154
#, java-format
msgid "Error opening serial port ''{0}''."
-msgstr ""
+msgstr ""
#: Serial.java:167
#, java-format
msgid ""
"Serial port ''{0}'' not found. Did you select the right one from the Tools > "
"Serial Port menu?"
-msgstr ""
+msgstr ""
#: Serial.java:424
#, java-format
msgid ""
"readBytesUntil() byte buffer is too small for the {0} bytes up to and "
"including char {1}"
-msgstr ""
+msgstr ""
#: Serial.java:567
#, java-format
msgid "Error inside Serial.{0}()"
-msgstr ""
+msgstr ""
#: tools/AutoFormat.java:91
msgid "Auto Format"
-msgstr ""
+msgstr ""
#: tools/AutoFormat.java:913 tools/format/src/AutoFormat.java:54
msgid "No changes necessary for Auto Format."
-msgstr ""
+msgstr ""
#: tools/AutoFormat.java:919
msgid "Auto Format Canceled: Too many right parentheses."
-msgstr ""
+msgstr ""
#: tools/AutoFormat.java:922
msgid "Auto Format Canceled: Too many left parentheses."
-msgstr ""
+msgstr ""
#: tools/AutoFormat.java:928
msgid "Auto Format Canceled: Too many right curly braces."
-msgstr ""
+msgstr ""
#: tools/AutoFormat.java:931
msgid "Auto Format Canceled: Too many left curly braces."
-msgstr ""
+msgstr ""
#: tools/AutoFormat.java:941
msgid "Auto Format finished."
-msgstr ""
+msgstr ""
#: tools/FixEncoding.java:41 tools/FixEncoding.java:58
#: tools/FixEncoding.java:79
msgid "Fix Encoding & Reload"
-msgstr ""
+msgstr ""
#: tools/FixEncoding.java:57
msgid "Discard all changes and reload sketch?"
-msgstr ""
+msgstr ""
#: tools/FixEncoding.java:77
msgid ""
"An error occurred while trying to fix the file encoding.\n"
"Do not attempt to save this sketch as it may overwrite\n"
"the old version. Use Open to re-open the sketch and try again.\n"
-msgstr ""
+msgstr ""
#: tools/Archiver.java:48
msgid "Archive Sketch"
-msgstr ""
+msgstr ""
#: tools/Archiver.java:59
msgid "yyMMdd"
-msgstr ""
+msgstr ""
#: tools/Archiver.java:74
msgid "Couldn't archive sketch"
-msgstr ""
+msgstr ""
#: tools/Archiver.java:75
msgid ""
"Archiving the sketch has been canceled because\n"
"the sketch couldn't save properly."
-msgstr ""
+msgstr ""
#: tools/Archiver.java:109
msgid "Archive sketch as:"
-msgstr ""
+msgstr ""
#: tools/Archiver.java:139
msgid "Archive sketch canceled."
-msgstr ""
+msgstr ""
#: SketchCode.java:83
#, java-format
msgid "Error while loading code {0}"
-msgstr ""
+msgstr ""
#: SketchCode.java:258
#, java-format
@@ -625,137 +625,137 @@ msgid ""
"older version of Processing,you may need to use Tools -> Fix Encoding & "
"Reload to updatethe sketch to use UTF-8 encoding. If not, you may need "
"todelete the bad characters to get rid of this warning."
-msgstr ""
+msgstr ""
#: Sketch.java:278 Sketch.java:307 Sketch.java:581 Sketch.java:970
msgid "Sketch is Read-Only"
-msgstr ""
+msgstr ""
#: Sketch.java:279 Sketch.java:308 Sketch.java:582 Sketch.java:971
msgid ""
"Some files are marked \"read-only\", so you'll\n"
"need to re-save the sketch in another location,\n"
"and try again."
-msgstr ""
+msgstr ""
#: Sketch.java:286
msgid "Name for new file:"
-msgstr ""
+msgstr ""
#: Sketch.java:298
msgid "Sketch is Untitled"
-msgstr ""
+msgstr ""
#: Sketch.java:299
msgid ""
"How about saving the sketch first \n"
"before trying to rename it?"
-msgstr ""
+msgstr ""
#: Sketch.java:359 Sketch.java:366 Sketch.java:377
msgid "Problem with rename"
-msgstr ""
+msgstr ""
#: Sketch.java:360
msgid "The name cannot start with a period."
-msgstr ""
+msgstr ""
#: Sketch.java:368
#, java-format
msgid "\".{0}\" is not a valid extension."
-msgstr ""
+msgstr ""
#: Sketch.java:378
msgid ""
"The main file can't use an extension.\n"
"(It may be time for your to graduate to a\n"
"\"real\" programming environment)"
-msgstr ""
+msgstr ""
#: Sketch.java:400 Sketch.java:414 Sketch.java:423 Sketch.java:863
msgid "Nope"
-msgstr ""
+msgstr ""
#: Sketch.java:402
#, java-format
msgid "A file named \"{0}\" already exists in \"{1}\""
-msgstr ""
+msgstr ""
#: Sketch.java:415
msgid "You can't have a .cpp file with the same name as the sketch."
-msgstr ""
+msgstr ""
#: Sketch.java:425
msgid ""
"You can't rename the sketch to \"{0}\"\n"
"because the sketch already has a .cpp file with that name."
-msgstr ""
+msgstr ""
#: Sketch.java:459
msgid "Cannot Rename"
-msgstr ""
+msgstr ""
#: Sketch.java:461
#, java-format
msgid "Sorry, a sketch (or folder) named \"{0}\" already exists."
-msgstr ""
+msgstr ""
#: Sketch.java:479
msgid "Could not rename the sketch. (0)"
-msgstr ""
+msgstr ""
#: Sketch.java:487 Sketch.java:532
#, java-format
msgid "Could not rename \"{0}\" to \"{1}\""
-msgstr ""
+msgstr ""
#: Sketch.java:500
msgid "Could not rename the sketch. (1)"
-msgstr ""
+msgstr ""
#: Sketch.java:507
msgid "Could not rename the sketch. (2)"
-msgstr ""
+msgstr ""
#: Sketch.java:544
msgid "createNewFile() returned false"
-msgstr ""
+msgstr ""
#: Sketch.java:591
msgid "Are you sure you want to delete this sketch?"
-msgstr ""
+msgstr ""
#: Sketch.java:592
#, java-format
msgid "Are you sure you want to delete \"{0}\"?"
-msgstr ""
+msgstr ""
#: Sketch.java:595 EditorHeader.java:314
msgid "Delete"
-msgstr ""
+msgstr ""
#: Sketch.java:620
msgid "Couldn't do it"
-msgstr ""
+msgstr ""
#: Sketch.java:621
#, java-format
msgid "Could not delete \"{0}\"."
-msgstr ""
+msgstr ""
#: Sketch.java:651
msgid "removeCode: internal error.. could not find code"
-msgstr ""
+msgstr ""
#: Sketch.java:724
msgid "Sketch is read-only"
-msgstr ""
+msgstr ""
#: Sketch.java:725
msgid ""
"Some files are marked \"read-only\", so you'll\n"
"need to re-save this sketch to another location."
-msgstr ""
+msgstr ""
#: Sketch.java:743
msgid ""
@@ -766,188 +766,188 @@ msgid ""
"disable this in the Preferences dialog.\n"
"\n"
"Save sketch and update its extension?"
-msgstr ""
+msgstr ""
#: Sketch.java:750
msgid ".pde -> .ino"
-msgstr ""
+msgstr ""
#: Sketch.java:829
msgid "Save sketch folder as..."
-msgstr ""
+msgstr ""
#: Sketch.java:865
msgid ""
"You can't save the sketch as \"{0}\"\n"
"because the sketch already has a .cpp file with that name."
-msgstr ""
+msgstr ""
#: Sketch.java:886
msgid "How very Borges of you"
-msgstr ""
+msgstr ""
#: Sketch.java:887
msgid ""
"You cannot save the sketch into a folder\n"
"inside itself. This would go on forever."
-msgstr ""
+msgstr ""
#: Sketch.java:979
msgid "Select an image or other data file to copy to your sketch"
-msgstr ""
+msgstr ""
#: Sketch.java:1047
#, java-format
msgid "Replace the existing version of {0}?"
-msgstr ""
+msgstr ""
#: Sketch.java:1069 Sketch.java:1092
msgid "Error adding file"
-msgstr ""
+msgstr ""
#: Sketch.java:1070
#, java-format
msgid "Could not delete the existing ''{0}'' file."
-msgstr ""
+msgstr ""
#: Sketch.java:1078
msgid "You can't fool me"
-msgstr ""
+msgstr ""
#: Sketch.java:1079
msgid ""
"This file has already been copied to the\n"
"location from which where you're trying to add it.\n"
"I ain't not doin nuthin'."
-msgstr ""
+msgstr ""
#: Sketch.java:1093
#, java-format
msgid "Could not add ''{0}'' to the sketch."
-msgstr ""
+msgstr ""
#: Sketch.java:1393 Sketch.java:1424
msgid "Build folder disappeared or could not be written"
-msgstr ""
+msgstr ""
#: Sketch.java:1408
msgid "Could not find main class"
-msgstr ""
+msgstr ""
#: Sketch.java:1433
#, java-format
msgid "Uncaught exception type: {0}"
-msgstr ""
+msgstr ""
#: Sketch.java:1465
#, java-format
msgid "Problem moving {0} to the build folder"
-msgstr ""
+msgstr ""
#: Sketch.java:1661
msgid "Uploading..."
-msgstr ""
+msgstr ""
#: Sketch.java:1684
#, java-format
msgid "Binary sketch size: {0} bytes (of a {1} byte maximum)"
-msgstr ""
+msgstr ""
#: Sketch.java:1689
msgid "Couldn't determine program size: {0}"
-msgstr ""
+msgstr ""
#: Sketch.java:1694
msgid ""
"Sketch too big; see http://www.arduino.cc/en/Guide/Troubleshooting#size for "
"tips on reducing it."
-msgstr ""
+msgstr ""
#: Sketch.java:1754
msgid "Missing the */ from the end of a /* comment */"
-msgstr ""
+msgstr ""
#: Sketch.java:1796
msgid "Sketch Disappeared"
-msgstr ""
+msgstr ""
#: Sketch.java:1797
msgid ""
"The sketch folder has disappeared.\n"
" Will attempt to re-save in the same location,\n"
"but anything besides the code will be lost."
-msgstr ""
+msgstr ""
#: Sketch.java:1810
msgid "Could not re-save sketch"
-msgstr ""
+msgstr ""
#: Sketch.java:1811
msgid ""
"Could not properly re-save the sketch. You may be in trouble at this point,\n"
"and it might be time to copy and paste your code to another text editor."
-msgstr ""
+msgstr ""
#: Sketch.java:2060
msgid ""
"The sketch name had to be modified. Sketch names can only consist\n"
"of ASCII characters and numbers (but cannot start with a number).\n"
"They should also be less less than 64 characters long."
-msgstr ""
+msgstr ""
#: debug/Uploader.java:52
msgid "https://developer.berlios.de/bugs/?group_id=3590"
-msgstr ""
+msgstr ""
#: debug/Uploader.java:54 debug/Compiler.java:43
#, java-format
msgid "Compiler error, please submit this code to {0}"
-msgstr ""
+msgstr ""
#: debug/Uploader.java:199
#, java-format
msgid ""
"the selected serial port {0} does not exist or your board is not connected"
-msgstr ""
+msgstr ""
#: debug/Uploader.java:203
msgid ""
"Device is not responding, check the right serial port is selected or RESET "
"the board right before exporting"
-msgstr ""
+msgstr ""
#: debug/Uploader.java:209
msgid ""
"Problem uploading to board. See http://www.arduino.cc/en/Guide/"
"Troubleshooting#upload for suggestions."
-msgstr ""
+msgstr ""
#: debug/Uploader.java:213
msgid ""
"Wrong microcontroller found. Did you select the right board from the Tools "
"> Board menu?"
-msgstr ""
+msgstr ""
#: debug/Compiler.java:41
msgid "http://code.google.com/p/arduino/issues/list"
-msgstr ""
+msgstr ""
#: debug/Compiler.java:79
msgid "No board selected; please choose a board from the Tools > Board menu."
-msgstr ""
+msgstr ""
#: debug/Compiler.java:422
#, java-format
msgid "{0} returned {1}"
-msgstr ""
+msgstr ""
#: debug/Compiler.java:426
msgid "Error compiling."
-msgstr ""
+msgstr ""
#: debug/Compiler.java:465
msgid "Please import the SPI library from the Sketch > Import Library menu."
-msgstr ""
+msgstr ""
#: debug/Compiler.java:466
msgid ""
@@ -956,11 +956,11 @@ msgid ""
"You appear to be using it or another library that depends on the SPI "
"library.\n"
"\n"
-msgstr ""
+msgstr ""
#: debug/Compiler.java:471
msgid "The 'BYTE' keyword is no longer supported."
-msgstr ""
+msgstr ""
#: debug/Compiler.java:472
msgid ""
@@ -968,11 +968,11 @@ msgid ""
"As of Arduino 1.0, the 'BYTE' keyword is no longer supported.\n"
"Please use Serial.write() instead.\n"
"\n"
-msgstr ""
+msgstr ""
#: debug/Compiler.java:477
msgid "The Server class has been renamed EthernetServer."
-msgstr ""
+msgstr ""
#: debug/Compiler.java:478
msgid ""
@@ -980,11 +980,11 @@ msgid ""
"As of Arduino 1.0, the Server class in the Ethernet library has been renamed "
"to EthernetServer.\n"
"\n"
-msgstr ""
+msgstr ""
#: debug/Compiler.java:483
msgid "The Client class has been renamed EthernetClient."
-msgstr ""
+msgstr ""
#: debug/Compiler.java:484
msgid ""
@@ -992,11 +992,11 @@ msgid ""
"As of Arduino 1.0, the Client class in the Ethernet library has been renamed "
"to EthernetClient.\n"
"\n"
-msgstr ""
+msgstr ""
#: debug/Compiler.java:489
msgid "The Udp class has been renamed EthernetUdp."
-msgstr ""
+msgstr ""
#: debug/Compiler.java:490
msgid ""
@@ -1004,11 +1004,11 @@ msgid ""
"As of Arduino 1.0, the Udp class in the Ethernet library has been renamed to "
"EthernetClient.\n"
"\n"
-msgstr ""
+msgstr ""
#: debug/Compiler.java:495
msgid "Wire.send() has been renamed Wire.write()."
-msgstr ""
+msgstr ""
#: debug/Compiler.java:496
msgid ""
@@ -1016,11 +1016,11 @@ msgid ""
"As of Arduino 1.0, the Wire.send() function was renamed to Wire.write() for "
"consistency with other libraries.\n"
"\n"
-msgstr ""
+msgstr ""
#: debug/Compiler.java:501
msgid "Wire.receive() has been renamed Wire.read()."
-msgstr ""
+msgstr ""
#: debug/Compiler.java:502
msgid ""
@@ -1028,50 +1028,50 @@ msgid ""
"As of Arduino 1.0, the Wire.receive() function was renamed to Wire.read() "
"for consistency with other libraries.\n"
"\n"
-msgstr ""
+msgstr ""
#: EditorConsole.java:152
msgid "Console Error"
-msgstr ""
+msgstr ""
#: EditorConsole.java:153
msgid ""
"A problem occurred while trying to open the\n"
"files used to store the console output."
-msgstr ""
+msgstr ""
#: Base.java:184
msgid "Non-fatal error while setting the Look & Feel."
-msgstr ""
+msgstr ""
#: Base.java:185
msgid "The error message follows, however Arduino should run fine."
-msgstr ""
+msgstr ""
#: Base.java:220
msgid "Problem Setting the Platform"
-msgstr ""
+msgstr ""
#: Base.java:221
msgid ""
"An unknown error occurred while trying to load\n"
"platform-specific code for your machine."
-msgstr ""
+msgstr ""
#: Base.java:232
msgid "Please install JDK 1.5 or later"
-msgstr ""
+msgstr ""
#: Base.java:233
msgid ""
"Arduino requires a full JDK (not just a JRE)\n"
"to run. Please install JDK 1.5 or later.\n"
"More information can be found in the reference."
-msgstr ""
+msgstr ""
#: Base.java:257
msgid "Sketchbook folder disappeared"
-msgstr ""
+msgstr ""
#: Base.java:258
msgid ""
@@ -1080,51 +1080,51 @@ msgid ""
"location, and create a new sketchbook folder if\n"
"necessary. Arduino will then stop talking about\n"
"himself in the third person."
-msgstr ""
+msgstr ""
#: Base.java:532
msgid "Time for a Break"
-msgstr ""
+msgstr ""
#: Base.java:533
msgid ""
"You've reached the limit for auto naming of new sketches\n"
"for the day. How about going for a walk instead?"
-msgstr ""
+msgstr ""
#: Base.java:537
msgid "Sunshine"
-msgstr ""
+msgstr ""
#: Base.java:538
msgid "No really, time for some fresh air for you."
-msgstr ""
+msgstr ""
#: Base.java:633
msgid "Open an Arduino sketch..."
-msgstr ""
+msgstr ""
#: Base.java:772
msgid ""
"
Are you "
"sure you want to Quit?
Closing the last open sketch will quit Arduino."
-msgstr ""
+msgstr ""
#: Base.java:970
msgid "Contributed"
-msgstr ""
+msgstr ""
#: Base.java:1095
msgid "Sketch Does Not Exist"
-msgstr ""
+msgstr ""
#: Base.java:1096
msgid ""
"The selected sketch no longer exists.\n"
"You may need to restart Arduino to update\n"
"the sketchbook menu."
-msgstr ""
+msgstr ""
#: Base.java:1125
#, java-format
@@ -1134,11 +1134,11 @@ msgid ""
"(ASCII-only with no spaces, and it cannot start with a number).\n"
"To get rid of this message, remove the sketch from\n"
"{1}"
-msgstr ""
+msgstr ""
#: Base.java:1132
msgid "Ignoring sketch with bad name"
-msgstr ""
+msgstr ""
#: Base.java:1202
#, java-format
@@ -1146,177 +1146,177 @@ msgid ""
"The library \"{0}\" cannot be used.\n"
"Library names must contain only basic letters and numbers.\n"
"(ASCII only and no spaces, and it cannot start with a number)"
-msgstr ""
+msgstr ""
#: Base.java:1207
msgid "Ignoring bad library name"
-msgstr ""
+msgstr ""
#: Base.java:1432
msgid "Problem getting data folder"
-msgstr ""
+msgstr ""
#: Base.java:1433
msgid "Error getting the Arduino data folder."
-msgstr ""
+msgstr ""
#: Base.java:1440
msgid "Settings issues"
-msgstr ""
+msgstr ""
#: Base.java:1441
msgid ""
"Arduino cannot run because it could not\n"
"create a folder to store your settings."
-msgstr ""
+msgstr ""
#: Base.java:1602
msgid "You forgot your sketchbook"
-msgstr ""
+msgstr ""
#: Base.java:1603
msgid ""
"Arduino cannot run because it could not\n"
"create a folder to store your sketchbook."
-msgstr ""
+msgstr ""
#: Base.java:1623
msgid "Select (or create new) folder for sketches..."
-msgstr ""
+msgstr ""
#: Base.java:1647
msgid "Problem Opening URL"
-msgstr ""
+msgstr ""
#: Base.java:1648
#, java-format
msgid ""
"Could not open the URL\n"
"{0}"
-msgstr ""
+msgstr ""
#: Base.java:1671
msgid "Problem Opening Folder"
-msgstr ""
+msgstr ""
#: Base.java:1672
#, java-format
msgid ""
"Could not open the folder\n"
"{0}"
-msgstr ""
+msgstr ""
#: Base.java:1785
msgid "Guide_MacOSX.html"
-msgstr ""
+msgstr ""
#: Base.java:1787
msgid "Guide_Windows.html"
-msgstr ""
+msgstr ""
#: Base.java:1789
msgid "http://www.arduino.cc/playground/Learning/Linux"
-msgstr ""
+msgstr ""
#: Base.java:1794
msgid "index.html"
-msgstr ""
+msgstr ""
#: Base.java:1799
msgid "Guide_Environment.html"
-msgstr ""
+msgstr ""
#: Base.java:1804
msgid "environment"
-msgstr ""
+msgstr ""
#: Base.java:1804
msgid "platforms.html"
-msgstr ""
+msgstr ""
#: Base.java:1809
msgid "Guide_Troubleshooting.html"
-msgstr ""
+msgstr ""
#: Base.java:1814
msgid "FAQ.html"
-msgstr ""
+msgstr ""
#: Base.java:1826
msgid "Message"
-msgstr ""
+msgstr ""
#: Base.java:1842
msgid "Warning"
-msgstr ""
+msgstr ""
#: Base.java:2196
#, java-format
msgid "Could not remove old version of {0}"
-msgstr ""
+msgstr ""
#: Base.java:2206
#, java-format
msgid "Could not replace {0}"
-msgstr ""
+msgstr ""
#: Base.java:2247 Base.java:2270
#, java-format
msgid "Could not delete {0}"
-msgstr ""
+msgstr ""
#: EditorHeader.java:292
msgid "New Tab"
-msgstr ""
+msgstr ""
#: EditorHeader.java:300
msgid "Rename"
-msgstr ""
+msgstr ""
#: EditorHeader.java:326
msgid "Previous Tab"
-msgstr ""
+msgstr ""
#: EditorHeader.java:340
msgid "Next Tab"
-msgstr ""
+msgstr ""
#: EditorToolbar.java:41 EditorToolbar.java:46
msgid "Verify"
-msgstr ""
+msgstr ""
#: EditorToolbar.java:41
msgid "Open"
-msgstr ""
+msgstr ""
#: EditorToolbar.java:46
msgid "New Editor Window"
-msgstr ""
+msgstr ""
#: EditorToolbar.java:46
msgid "Open in Another Window"
-msgstr ""
+msgstr ""
#: Platform.java:167
msgid "No launcher available"
-msgstr ""
+msgstr ""
#: Platform.java:168
msgid ""
"Unspecified platform, no launcher available.\n"
"To enable opening URLs or folders, add a \n"
"\"launcher=/path/to/app\" line to preferences.txt"
-msgstr ""
+msgstr ""
#: Theme.java:52
msgid ""
"Could not read color theme settings.\n"
"You'll need to reinstall Processing."
-msgstr ""
+msgstr ""
#: Preferences.java:80
msgid "Browse"
-msgstr ""
+msgstr ""
#: Preferences.java:83
msgid "System Default"
@@ -1434,31 +1434,31 @@ msgstr ""
msgid ""
"Could not read default settings.\n"
"You'll need to reinstall Arduino."
-msgstr ""
+msgstr ""
#: Preferences.java:242
#, java-format
msgid "Could not read preferences from {0}"
-msgstr ""
+msgstr ""
#: Preferences.java:261
msgid "Error reading preferences"
-msgstr ""
+msgstr ""
#: Preferences.java:263
#, java-format
msgid ""
"Error reading the preferences file. Please delete (or move)\n"
"{0} and restart Arduino."
-msgstr ""
+msgstr ""
#: Preferences.java:299
msgid "Sketchbook location:"
-msgstr ""
+msgstr ""
#: Preferences.java:314
msgid "Select new sketchbook location"
-msgstr ""
+msgstr ""
#: Preferences.java:337
msgid "Editor language: "
@@ -1466,23 +1466,23 @@ msgstr ""
#: Preferences.java:342 Preferences.java:358
msgid " (requires restart of Arduino)"
-msgstr ""
+msgstr ""
#: Preferences.java:354
msgid "Editor font size: "
-msgstr ""
+msgstr ""
#: Preferences.java:371
msgid "Show verbose output during: "
-msgstr ""
+msgstr ""
#: Preferences.java:373
msgid "compilation "
-msgstr ""
+msgstr ""
#: Preferences.java:375
msgid "upload"
-msgstr ""
+msgstr ""
#: Preferences.java:384
msgid "Verify code after upload"
@@ -1490,29 +1490,29 @@ msgstr ""
#: Preferences.java:393
msgid "Use external editor"
-msgstr ""
+msgstr ""
#: Preferences.java:403
msgid "Check for updates on startup"
-msgstr ""
+msgstr ""
#: Preferences.java:412
msgid "Update sketch files to new extension on save (.pde -> .ino)"
-msgstr ""
+msgstr ""
#: Preferences.java:423
msgid "Automatically associate .ino files with Arduino"
-msgstr ""
+msgstr ""
#: Preferences.java:433
msgid "More preferences can be edited directly in the file"
-msgstr ""
+msgstr ""
#: Preferences.java:462
msgid "(edit only when Arduino is not running)"
-msgstr ""
+msgstr ""
#: Preferences.java:609
#, java-format
msgid "ignoring invalid font size {0}"
-msgstr ""
+msgstr ""
diff --git a/app/src/processing/app/i18n/Resources_mr.properties b/app/src/processing/app/i18n/Resources_mr.properties
index 8d2613a3d94..acefac9cc0c 100644
--- a/app/src/processing/app/i18n/Resources_mr.properties
+++ b/app/src/processing/app/i18n/Resources_mr.properties
@@ -1,8 +1,8 @@
-# Marathi translations for PACKAGE package.
-# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# Sarvesh S. Karkhanis <>, 2012.
-#
+# Marathi translations for PACKAGE package.
+# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Sarvesh S. Karkhanis <>, 2012.
+#
!=Project-Id-Version\: PACKAGE VERSION\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-04-04 10\:24-0400\nPO-Revision-Date\: 2012-04-04 13\:24-0400\nLast-Translator\: Sarvesh S. Karkhanis <>\nLanguage-Team\: \nLanguage\: mr\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n
#: Editor.java:366
diff --git a/app/src/processing/app/i18n/Resources_ta.po b/app/src/processing/app/i18n/Resources_ta.po
index 1836d2319f0..844c1d22545 100644
--- a/app/src/processing/app/i18n/Resources_ta.po
+++ b/app/src/processing/app/i18n/Resources_ta.po
@@ -1,277 +1,277 @@
-# Tamil translations for Arduino IDE package.
-# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the Arduino IDE package.
-# Ram Kumar.Y , 2012.
-#
+# Tamil translations for Arduino IDE package.
+# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the Arduino IDE package.
+# Ram Kumar.Y , 2012.
+#
msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-29 10:24-0400\n"
-"PO-Revision-Date: 2012-05-04 10:24-0400\n"
-"Last-Translator: Ram Kumar.Y \n"
-"Language-Team: Tamil\n"
-"Language: ta\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-03-29 10:24-0400\n"
+"PO-Revision-Date: 2012-05-04 10:24-0400\n"
+"Last-Translator: Ram Kumar.Y \n"
+"Language-Team: Tamil\n"
+"Language: ta\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
#: Editor.java:366
msgid "No files were added to the sketch."
-msgstr "வரைவில் இன்னும் கோப்புகள் சேர்க்கப்படவில்லை."
+msgstr "வரைவில் இன்னும் கோப்புகள் சேர்க்கப்படவில்லை."
#: Editor.java:369 Sketch.java:996
msgid "One file added to the sketch."
-msgstr "வரைவில் ஒரு கோப்பு சேர்க்கப்பட்டுள்ளன."
+msgstr "வரைவில் ஒரு கோப்பு சேர்க்கப்பட்டுள்ளன."
#: Editor.java:373
#, java-format
msgid "{0} files added to the sketch."
-msgstr "கோப்புகள் வரைவில் சேர்கப்பட்டுள்ளன."
+msgstr "கோப்புகள் வரைவில் சேர்கப்பட்டுள்ளன."
#: Editor.java:484
msgid "File"
-msgstr "கோப்பு"
+msgstr "கோப்பு"
#: Editor.java:486 EditorToolbar.java:41
msgid "New"
-msgstr "புதிய"
+msgstr "புதிய"
#: Editor.java:494 Base.java:903
msgid "Open..."
-msgstr "திற..."
+msgstr "திற..."
#: Editor.java:503
msgid "Sketchbook"
-msgstr "வரைவு புத்தகம்"
+msgstr "வரைவு புத்தகம்"
#: Editor.java:509
msgid "Examples"
-msgstr "எடுத்துக்காட்டுகள்"
+msgstr "எடுத்துக்காட்டுகள்"
#: Editor.java:514 Editor.java:1977
msgid "Close"
-msgstr "மூடு"
+msgstr "மூடு"
#: Editor.java:522 Editor.java:2017 Editor.java:2421 EditorToolbar.java:41
#: EditorToolbar.java:46
msgid "Save"
-msgstr "சேமி"
+msgstr "சேமி"
#: Editor.java:530
msgid "Save As..."
-msgstr "எனச் சேமி..."
+msgstr "எனச் சேமி..."
#: Editor.java:538 EditorToolbar.java:41
msgid "Upload"
-msgstr "பதிவேற்று"
+msgstr "பதிவேற்று"
#: Editor.java:546 EditorToolbar.java:46
msgid "Upload Using Programmer"
-msgstr "நிரலரை பயன்படுத்தி பதிவேற்று"
+msgstr "நிரலரை பயன்படுத்தி பதிவேற்று"
#: Editor.java:556
msgid "Page Setup"
-msgstr "பக்கத்தை நிறுவுக"
+msgstr "பக்கத்தை நிறுவுக"
#: Editor.java:564
msgid "Print"
-msgstr "அச்சிடுக"
+msgstr "அச்சிடுக"
#: Editor.java:576 Preferences.java:279
msgid "Preferences"
-msgstr "விருப்பத்தேர்வுகள்"
+msgstr "விருப்பத்தேர்வுகள்"
#: Editor.java:586 Base.java:782
msgid "Quit"
-msgstr "வெளியேறுக"
+msgstr "வெளியேறுக"
#: Editor.java:600
msgid "Sketch"
-msgstr "வரைவு"
+msgstr "வரைவு"
#: Editor.java:602
msgid "Verify / Compile"
-msgstr "உறுதிப்படுத்து / தொகுப்பி"
+msgstr "உறுதிப்படுத்து / தொகுப்பி"
#: Editor.java:629
msgid "Import Library..."
-msgstr "நூலகத்தை இறக்குமதி செய்..."
+msgstr "நூலகத்தை இறக்குமதி செய்..."
#: Editor.java:634
msgid "Show Sketch Folder"
-msgstr "வரைவு உறையை காட்டுக"
+msgstr "வரைவு உறையை காட்டுக"
#: Editor.java:643
msgid "Add File..."
-msgstr "கோப்பை சேர்"
+msgstr "கோப்பை சேர்"
#: Editor.java:656
msgid "Tools"
-msgstr "கருவிகள்"
+msgstr "கருவிகள்"
#: Editor.java:662 EditorToolbar.java:41 EditorToolbar.java:46
msgid "Serial Monitor"
-msgstr "தொடர்நிலை கண்காணிப்புத்திரை"
+msgstr "தொடர்நிலை கண்காணிப்புத்திரை"
#: Editor.java:682
msgid "Board"
-msgstr "பலகை"
+msgstr "பலகை"
#: Editor.java:690
msgid "Serial Port"
-msgstr "தொடர்நிலை துறை"
+msgstr "தொடர்நிலை துறை"
#: Editor.java:695
msgid "Programmer"
-msgstr "நிரலர்"
+msgstr "நிரலர்"
#: Editor.java:699
msgid "Burn Bootloader"
-msgstr "துவக்கு நிரல் பதிவேற்று"
+msgstr "துவக்கு நிரல் பதிவேற்று"
#: Editor.java:923
msgid "serialMenu is null"
-msgstr "தொடர் தெரிவுதிரை வெற்றாக உள்ளது"
+msgstr "தொடர் தெரிவுதிரை வெற்றாக உள்ளது"
#: Editor.java:927 Editor.java:934
msgid "name is null"
-msgstr "பெயர் வெற்றாக உள்ளது"
+msgstr "பெயர் வெற்றாக உள்ளது"
#: Editor.java:986
msgid "error retrieving port list"
-msgstr "துறை பட்டியலை பெறுவதில் பிழை ஏற்பட்டுள்ளது"
+msgstr "துறை பட்டியலை பெறுவதில் பிழை ஏற்பட்டுள்ளது"
#: Editor.java:1002
msgid "Help"
-msgstr "உதவி"
+msgstr "உதவி"
#: Editor.java:1041
msgid "Getting Started"
-msgstr "தொடங்குதல்"
+msgstr "தொடங்குதல்"
#: Editor.java:1049
msgid "Environment"
-msgstr "சூழல்"
+msgstr "சூழல்"
#: Editor.java:1057
msgid "Troubleshooting"
-msgstr "சரிப்படுத்துதல்"
+msgstr "சரிப்படுத்துதல்"
#: Editor.java:1065
msgid "Reference"
-msgstr "குறிப்பு"
+msgstr "குறிப்பு"
#: Editor.java:1073 Editor.java:2728
msgid "Find in Reference"
-msgstr "குறிப்பில் கண்டுபிடி"
+msgstr "குறிப்பில் கண்டுபிடி"
#: Editor.java:1083
msgid "Frequently Asked Questions"
-msgstr "அடிக்கடி கேட்கப்படும் கேள்விகள்"
+msgstr "அடிக்கடி கேட்கப்படும் கேள்விகள்"
#: Editor.java:1091
msgid "Visit Arduino.cc"
-msgstr "Arduino.cc செல்க"
+msgstr "Arduino.cc செல்க"
#: Editor.java:1094
msgid "http://arduino.cc/"
-msgstr "http://arduino.cc/"
+msgstr "http://arduino.cc/"
#: Editor.java:1102
msgid "About Arduino"
-msgstr "Arduino பற்றி"
+msgstr "Arduino பற்றி"
#: Editor.java:1116
msgid "Edit"
-msgstr "தொகு"
+msgstr "தொகு"
#: Editor.java:1119 Editor.java:1341
msgid "Undo"
-msgstr "திரும்பப்பெறுக"
+msgstr "திரும்பப்பெறுக"
#: Editor.java:1124 Editor.java:1126 Editor.java:1376
msgid "Redo"
-msgstr "திரும்பச்செய்க"
+msgstr "திரும்பச்செய்க"
#: Editor.java:1135 Editor.java:2652
msgid "Cut"
-msgstr "வெட்டுக"
+msgstr "வெட்டுக"
#: Editor.java:1143 Editor.java:2660
msgid "Copy"
-msgstr "நகல்"
+msgstr "நகல்"
#: Editor.java:1151 Editor.java:2668
msgid "Copy for Forum"
-msgstr "பொது மன்றத்திற்காக நகலெடு"
+msgstr "பொது மன்றத்திற்காக நகலெடு"
#: Editor.java:1163 Editor.java:2676
msgid "Copy as HTML"
-msgstr "HTML ஆக நகலெடு"
+msgstr "HTML ஆக நகலெடு"
#: Editor.java:1175 Editor.java:2684
msgid "Paste"
-msgstr "ஒட்டு"
+msgstr "ஒட்டு"
#: Editor.java:1184 Editor.java:2692
msgid "Select All"
-msgstr "அனைத்தும் தேர்ந்தெடு"
+msgstr "அனைத்தும் தேர்ந்தெடு"
#: Editor.java:1194 Editor.java:2702
msgid "Comment/Uncomment"
-msgstr "கருத்துரைக/கருத்தை நீக்குக"
+msgstr "கருத்துரைக/கருத்தை நீக்குக"
#: Editor.java:1202 Editor.java:2710
msgid "Increase Indent"
-msgstr "உள்தள்ளலை அதிகப்படுத்துக"
+msgstr "உள்தள்ளலை அதிகப்படுத்துக"
#: Editor.java:1210 Editor.java:2718
msgid "Decrease Indent"
-msgstr "உள்தள்ளலை குறைக்க"
+msgstr "உள்தள்ளலை குறைக்க"
#: Editor.java:1220
msgid "Find..."
-msgstr "தேடு..."
+msgstr "தேடு..."
#: Editor.java:1235
msgid "Find Next"
-msgstr "அடுத்ததை தேடு"
+msgstr "அடுத்ததை தேடு"
#: Editor.java:1245
msgid "Find Previous"
-msgstr "முந்தியதை தேடு"
+msgstr "முந்தியதை தேடு"
#: Editor.java:1255
msgid "Use Selection For Find"
-msgstr "தேடுதலுக்கு தெரிவுகளை பயன்படுத்தவும்"
+msgstr "தேடுதலுக்கு தெரிவுகளை பயன்படுத்தவும்"
#: Editor.java:1816
msgid "First select a word to find in the reference."
-msgstr "குறிப்பில் தேட முதலில் ஒரு வார்த்தையை தேர்வு செய்யவும்"
+msgstr "குறிப்பில் தேட முதலில் ஒரு வார்த்தையை தேர்வு செய்யவும்"
#: Editor.java:1823
#, java-format
msgid "No reference available for \"{0}\""
-msgstr "\"{0}\" க்கு எந்த குறிப்பும் இல்லை"
+msgstr "\"{0}\" க்கு எந்த குறிப்பும் இல்லை"
#: Editor.java:1826
#, java-format
msgid "{0}.html"
-msgstr "{0}.html"
+msgstr "{0}.html"
#: Editor.java:1843 Sketch.java:1647
msgid "Compiling sketch..."
-msgstr "வரைவை தொகுக்கிறது..."
+msgstr "வரைவை தொகுக்கிறது..."
#: Editor.java:1864 Editor.java:1881
msgid "Done compiling."
-msgstr "தொகுத்துவிட்டது."
+msgstr "தொகுத்துவிட்டது."
#: Editor.java:1973
#, java-format
msgid "Save changes to \"{0}\"? "
-msgstr "மாறுதல்களை \"{0}\"? ல் சேமிக்கவும்"
+msgstr "மாறுதல்களை \"{0}\"? ல் சேமிக்கவும்"
#: Editor.java:2006
msgid ""
@@ -279,37 +279,37 @@ msgid ""
"{ font: 11pt \"Lucida Grande\"; margin-top: 8px } Do you "
"want to save changes to this sketch before closing?
If you don't "
"save, your changes will be lost."
-msgstr ""
-"
நீங்கள் "
-"மாற்றங்களை வரைவில் சேமிக்க விரும்புகிறீர்களா?
இல்லையென்றால் "
-"நீங்கள் மாற்றியவை அனைத்தையும் இழந்துவிடுவீர்கள்."
+msgstr ""
+"
நீங்கள் "
+"மாற்றங்களை வரைவில் சேமிக்க விரும்புகிறீர்களா?
இல்லையென்றால் "
+"நீங்கள் மாற்றியவை அனைத்தையும் இழந்துவிடுவீர்கள்."
#: Editor.java:2017 Editor.java:2098 Editor.java:2418 Sketch.java:589
#: Sketch.java:741 Sketch.java:1046 Preferences.java:78
msgid "Cancel"
-msgstr "இரத்து செய்"
+msgstr "இரத்து செய்"
#: Editor.java:2017
msgid "Don't Save"
-msgstr "சேமிக்காதே"
+msgstr "சேமிக்காதே"
#: Editor.java:2089
msgid "Bad file selected"
-msgstr "தவறான கோப்பு தேர்வுசெய்யப்பட்டுள்ளது "
+msgstr "தவறான கோப்பு தேர்வுசெய்யப்பட்டுள்ளது "
#: Editor.java:2090
msgid ""
"Processing can only open its own sketches\n"
"and other files ending in .ino or .pde"
-msgstr ""
-"செயலாக்கத்தால் அதனுடைய வரைவுகள் மற்றும்\n"
-".ino அல்லது .pde நீட்டுதல் கொண்ட கோப்புகளை மட்டுமே திறக்க முடியும்"
+msgstr ""
+"செயலாக்கத்தால் அதனுடைய வரைவுகள் மற்றும்\n"
+".ino அல்லது .pde நீட்டுதல் கொண்ட கோப்புகளை மட்டுமே திறக்க முடியும்"
#: Editor.java:2098 Editor.java:2418 Sketch.java:589 Sketch.java:741
#: Sketch.java:1046 Preferences.java:79
msgid "OK"
-msgstr "சரி"
+msgstr "சரி"
#: Editor.java:2100
#, java-format
@@ -317,328 +317,328 @@ msgid ""
"The file \"{0}\" needs to be inside\n"
"a sketch folder named \"{1}\".\n"
"Create this folder, move the file, and continue?"
-msgstr ""
-"\"{0}\" கோப்பு \"{1}\" என்ற பெயர் கொண்ட\n"
-"வரைவு உறையில் மட்டுமே இருக்க முடியும்.\n"
-"இந்த உறையை உருவாக்கி, கோப்பை நகற்றி, முன்னேரவா?"
+msgstr ""
+"\"{0}\" கோப்பு \"{1}\" என்ற பெயர் கொண்ட\n"
+"வரைவு உறையில் மட்டுமே இருக்க முடியும்.\n"
+"இந்த உறையை உருவாக்கி, கோப்பை நகற்றி, முன்னேரவா?"
#: Editor.java:2109
msgid "Moving"
-msgstr "நகற்றுகிறது"
+msgstr "நகற்றுகிறது"
#: Editor.java:2120 Editor.java:2131 Editor.java:2141 Editor.java:2159
#: Sketch.java:479 Sketch.java:485 Sketch.java:500 Sketch.java:507
#: Sketch.java:530 Sketch.java:547 Base.java:1861 Preferences.java:240
msgid "Error"
-msgstr "பிழை"
+msgstr "பிழை"
#: Editor.java:2122
#, java-format
msgid "A folder named \"{0}\" already exists. Can't open sketch."
-msgstr "\"{0}\" என்ற உறை ஏற்கனவே இருக்கிறது. வரைவை திறக்க முடியவில்லை."
+msgstr "\"{0}\" என்ற உறை ஏற்கனவே இருக்கிறது. வரைவை திறக்க முடியவில்லை."
#: Editor.java:2132
msgid "Could not create the sketch folder."
-msgstr "வரைவு உறையை உருவாக்க முடியவில்லை."
+msgstr "வரைவு உறையை உருவாக்க முடியவில்லை."
#: Editor.java:2141
msgid "Could not copy to a proper location."
-msgstr "சரியான இடத்திற்கு பிரதி எடுக்க முடியவில்லை."
+msgstr "சரியான இடத்திற்கு பிரதி எடுக்க முடியவில்லை."
#: Editor.java:2159
msgid "Could not create the sketch."
-msgstr "வரைவை உருவாக்க முடியவில்லை."
+msgstr "வரைவை உருவாக்க முடியவில்லை."
#: Editor.java:2166
#, java-format
msgid "{0} | Arduino {1}"
-msgstr "{0} | Arduino {1}"
+msgstr "{0} | Arduino {1}"
#: Editor.java:2223 Editor.java:2261
msgid "Saving..."
-msgstr "சேமிக்கிறது..."
+msgstr "சேமிக்கிறது..."
#: Editor.java:2228 Editor.java:2264
msgid "Done Saving."
-msgstr "செமித்துவிட்டது."
+msgstr "செமித்துவிட்டது."
#: Editor.java:2270
msgid "Save Canceled."
-msgstr "சேமிப்பு ரத்து செய்யப்பட்டது."
+msgstr "சேமிப்பு ரத்து செய்யப்பட்டது."
#: Editor.java:2296
#, java-format
msgid ""
"Serial port {0} not found.\n"
"Retry the upload with another serial port?"
-msgstr ""
-"தொடர்நிலை துறை {0} காணவில்லை.\n"
-"வேறு தொடர்நிலை துறை கொண்டு மேலேற்ற முயற்சிக்கவும்?"
+msgstr ""
+"தொடர்நிலை துறை {0} காணவில்லை.\n"
+"வேறு தொடர்நிலை துறை கொண்டு மேலேற்ற முயற்சிக்கவும்?"
#: Editor.java:2331
msgid "Uploading to I/O Board..."
-msgstr "உள்ளீட்டு/வெளியீட்டு பலகைக்கு மேலேற்றுகிறது..."
+msgstr "உள்ளீட்டு/வெளியீட்டு பலகைக்கு மேலேற்றுகிறது..."
#: Editor.java:2348 Editor.java:2384
msgid "Done uploading."
-msgstr "மேலேற்றி முடித்துவிட்டது."
+msgstr "மேலேற்றி முடித்துவிட்டது."
#: Editor.java:2356 Editor.java:2392
msgid "Upload canceled."
-msgstr "மேலேற்றம் ரத்து செய்யப்பட்டது."
+msgstr "மேலேற்றம் ரத்து செய்யப்பட்டது."
#: Editor.java:2420
msgid "Save changes before export?"
-msgstr "ஏற்றுமதி செய்யும் முன் மாற்றங்களை செமிக்கவா?"
+msgstr "ஏற்றுமதி செய்யும் முன் மாற்றங்களை செமிக்கவா?"
#: Editor.java:2435
msgid "Export canceled, changes must first be saved."
-msgstr "ஏற்றுமதி ரத்து செய்யப்பட்டது, மாற்றங்களை முதலில் சேமிக்க வேண்டும்."
+msgstr "ஏற்றுமதி ரத்து செய்யப்பட்டது, மாற்றங்களை முதலில் சேமிக்க வேண்டும்."
#: Editor.java:2457
msgid "Burning bootloader to I/O Board (this may take a minute)..."
-msgstr "துவக்கு நிரலை உள்ளீடு/வெளியீடு பலகையில் பதிவேற்றப்படுகிறது (இது சில நிமிடங்கள் நடக்கும்)..."
+msgstr "துவக்கு நிரலை உள்ளீடு/வெளியீடு பலகையில் பதிவேற்றப்படுகிறது (இது சில நிமிடங்கள் நடக்கும்)..."
#: Editor.java:2463
msgid "Done burning bootloader."
-msgstr "துவக்கு நிரலை பதிவேற்றிவிட்டது."
+msgstr "துவக்கு நிரலை பதிவேற்றிவிட்டது."
#: Editor.java:2465 Editor.java:2469 Editor.java:2473
msgid "Error while burning bootloader."
-msgstr "துவக்கு நிரலை பதிவேற்றும்போது பிழை ஏற்பட்டுவிட்டது."
+msgstr "துவக்கு நிரலை பதிவேற்றும்போது பிழை ஏற்பட்டுவிட்டது."
#: Editor.java:2500
msgid "Printing..."
-msgstr "அச்சிடுகிறது..."
+msgstr "அச்சிடுகிறது..."
#: Editor.java:2517
msgid "Done printing."
-msgstr "அச்சிட்டுவிட்டது."
+msgstr "அச்சிட்டுவிட்டது."
#: Editor.java:2520
msgid "Error while printing."
-msgstr "அச்சிடும்போது பிழை ஏற்பட்டுவிட்டது."
+msgstr "அச்சிடும்போது பிழை ஏற்பட்டுவிட்டது."
#: Editor.java:2524
msgid "Printing canceled."
-msgstr "அச்சிடுவது ரத்து செய்யப்பட்டது."
+msgstr "அச்சிடுவது ரத்து செய்யப்பட்டது."
#: Editor.java:2572
#, java-format
msgid "Bad error line: {0}"
-msgstr "பிழையின் வரிசை: {0}"
+msgstr "பிழையின் வரிசை: {0}"
#: Editor.java:2641
msgid "Open URL"
-msgstr "URLஐ திற"
+msgstr "URLஐ திற"
#: UpdateCheck.java:53
msgid "http://www.arduino.cc/latest.txt"
-msgstr "http://www.arduino.cc/latest.txt"
+msgstr "http://www.arduino.cc/latest.txt"
#: UpdateCheck.java:103
msgid ""
"A new version of Arduino is available,\n"
"would you like to visit the Arduino download page?"
-msgstr ""
-"Arduinoவின் புதிய பதிப்பு கிடைக்கிறது,\n"
-"நீங்கள் Arduino பதிவிறக்க பக்கத்தை காண விரும்புகிறீர்களா?"
+msgstr ""
+"Arduinoவின் புதிய பதிப்பு கிடைக்கிறது,\n"
+"நீங்கள் Arduino பதிவிறக்க பக்கத்தை காண விரும்புகிறீர்களா?"
#: UpdateCheck.java:108 Preferences.java:76
msgid "Yes"
-msgstr "ஆம்"
+msgstr "ஆம்"
#: UpdateCheck.java:108 Preferences.java:77
msgid "No"
-msgstr "இல்லை"
+msgstr "இல்லை"
#: UpdateCheck.java:111
msgid "Update"
-msgstr "புதிய பதிப்பை தேடு"
+msgstr "புதிய பதிப்பை தேடு"
#: UpdateCheck.java:118
msgid "http://www.arduino.cc/en/Main/Software"
-msgstr "http://www.arduino.cc/en/Main/Software"
+msgstr "http://www.arduino.cc/en/Main/Software"
#: FindReplace.java:80
msgid "Find:"
-msgstr "கண்டுபிடி:"
+msgstr "கண்டுபிடி:"
#: FindReplace.java:81
msgid "Replace with:"
-msgstr "இதாக மாற்று:"
+msgstr "இதாக மாற்று:"
#: FindReplace.java:96
msgid "Ignore Case"
-msgstr "வேற்றுமையை அலட்சியப்படுத்து"
+msgstr "வேற்றுமையை அலட்சியப்படுத்து"
#: FindReplace.java:105
msgid "Wrap Around"
-msgstr "சுற்றி கட்டு"
+msgstr "சுற்றி கட்டு"
#: FindReplace.java:120 FindReplace.java:131
msgid "Replace All"
-msgstr "அனைத்தையும் மாற்றிடு"
+msgstr "அனைத்தையும் மாற்றிடு"
#: FindReplace.java:121 FindReplace.java:130 Sketch.java:1050
msgid "Replace"
-msgstr "மாற்று"
+msgstr "மாற்று"
#: FindReplace.java:122 FindReplace.java:129
msgid "Replace & Find"
-msgstr "மாற்றிவிட்டு தேடு"
+msgstr "மாற்றிவிட்டு தேடு"
#: FindReplace.java:123 FindReplace.java:128
msgid "Previous"
-msgstr "முந்திய"
+msgstr "முந்திய"
#: FindReplace.java:124 FindReplace.java:127
msgid "Find"
-msgstr "கண்டுபிடி"
+msgstr "கண்டுபிடி"
#: SerialMonitor.java:93
msgid "Send"
-msgstr "அனுப்பு"
+msgstr "அனுப்பு"
#: SerialMonitor.java:110
msgid "Autoscroll"
-msgstr "சுய உருள்"
+msgstr "சுய உருள்"
#: SerialMonitor.java:112
msgid "No line ending"
-msgstr "வரி முடிவு இல்லை"
+msgstr "வரி முடிவு இல்லை"
#: SerialMonitor.java:112
msgid "Newline"
-msgstr "புது வரி"
+msgstr "புது வரி"
#: SerialMonitor.java:112
msgid "Carriage return"
-msgstr "புதுவரி திரும்பி"
+msgstr "புதுவரி திரும்பி"
#: SerialMonitor.java:112
msgid "Both NL & CR"
-msgstr "NL மற்றும் CR"
+msgstr "NL மற்றும் CR"
#: SerialMonitor.java:130 SerialMonitor.java:133
msgid " baud"
-msgstr " ஒலிபரப்பு வேகம்"
+msgstr " ஒலிபரப்பு வேகம்"
#: Serial.java:147
#, java-format
msgid ""
"Serial port ''{0}'' already in use. Try quiting any programs that may be "
"using it."
-msgstr ""
-"தொடர்நிலை துறை ''{0}'' ஏற்கனவே பயன்பாட்டிலுள்ளது. அதை பயன்படுத்தும் வேறு நிரலை அணைத்துவிட்டு "
-"முயற்சிக்கவும்."
+msgstr ""
+"தொடர்நிலை துறை ''{0}'' ஏற்கனவே பயன்பாட்டிலுள்ளது. அதை பயன்படுத்தும் வேறு நிரலை அணைத்துவிட்டு "
+"முயற்சிக்கவும்."
#: Serial.java:154
#, java-format
msgid "Error opening serial port ''{0}''."
-msgstr "தொடர்நிலை துறை ''{0}''யை திறப்பதில் பிழை ஏற்பட்டுவிட்டது."
+msgstr "தொடர்நிலை துறை ''{0}''யை திறப்பதில் பிழை ஏற்பட்டுவிட்டது."
#: Serial.java:167
#, java-format
msgid ""
"Serial port ''{0}'' not found. Did you select the right one from the Tools > "
"Serial Port menu?"
-msgstr ""
-"தொடர்நிலை துறை ''{0}''யை காணவில்லை. நீங்கள் சரியானதை கருவிகள் > தொடர்நிலை துறை பட்டியலில் தேர்வு செய்தீர்களா?"
+msgstr ""
+"தொடர்நிலை துறை ''{0}''யை காணவில்லை. நீங்கள் சரியானதை கருவிகள் > தொடர்நிலை துறை பட்டியலில் தேர்வு செய்தீர்களா?"
#: Serial.java:424
#, java-format
msgid ""
"readBytesUntil() byte buffer is too small for the {0} bytes up to and "
"including char {1}"
-msgstr ""
-"readBytesUntil() எண்பிட்டு அணை {0} எண்பிட்டுகளுக்கு மிக குறைவாக உள்ளது "
-"char {1} உடன் சேற்று"
+msgstr ""
+"readBytesUntil() எண்பிட்டு அணை {0} எண்பிட்டுகளுக்கு மிக குறைவாக உள்ளது "
+"char {1} உடன் சேற்று"
#: Serial.java:567
#, java-format
msgid "Error inside Serial.{0}()"
-msgstr "தொடர்நிலை.{0}()க்குள் பிழை உள்ளது"
+msgstr "தொடர்நிலை.{0}()க்குள் பிழை உள்ளது"
#: tools/AutoFormat.java:91
msgid "Auto Format"
-msgstr "சுய வடிவம்"
+msgstr "சுய வடிவம்"
#: tools/AutoFormat.java:913 tools/format/src/AutoFormat.java:54
msgid "No changes necessary for Auto Format."
-msgstr "சுய வடிவத்திற்கு எந்த மாற்றங்களும் தேவையில்லை."
+msgstr "சுய வடிவத்திற்கு எந்த மாற்றங்களும் தேவையில்லை."
#: tools/AutoFormat.java:919
msgid "Auto Format Canceled: Too many right parentheses."
-msgstr "சுய வடிவம் ரத்து செய்யப்பட்டது: மிக அதிகமான வலது குறியீடுகள்."
+msgstr "சுய வடிவம் ரத்து செய்யப்பட்டது: மிக அதிகமான வலது குறியீடுகள்."
#: tools/AutoFormat.java:922
msgid "Auto Format Canceled: Too many left parentheses."
-msgstr "சுய வடிவம் ரத்து செய்யப்பட்டது: மிக அதிகமான இடது குறியீடுகள்."
+msgstr "சுய வடிவம் ரத்து செய்யப்பட்டது: மிக அதிகமான இடது குறியீடுகள்."
#: tools/AutoFormat.java:928
msgid "Auto Format Canceled: Too many right curly braces."
-msgstr "சுய வடிவம் ரத்து செய்யப்பட்டது: மிக அதிகமான வலது வளைவு குறியீடுகள்."
+msgstr "சுய வடிவம் ரத்து செய்யப்பட்டது: மிக அதிகமான வலது வளைவு குறியீடுகள்."
#: tools/AutoFormat.java:931
msgid "Auto Format Canceled: Too many left curly braces."
-msgstr "சுய வடிவம் ரத்து செய்யப்பட்டது: மிக அதிகமான இடது வளைவு குறியீடுகள்."
+msgstr "சுய வடிவம் ரத்து செய்யப்பட்டது: மிக அதிகமான இடது வளைவு குறியீடுகள்."
#: tools/AutoFormat.java:941
msgid "Auto Format finished."
-msgstr "சுய வடிவம் முடிந்தது."
+msgstr "சுய வடிவம் முடிந்தது."
#: tools/FixEncoding.java:41 tools/FixEncoding.java:58
#: tools/FixEncoding.java:79
msgid "Fix Encoding & Reload"
-msgstr "குறியீட்டை சரி செய்துவிட்டு ஏற்றவும்"
+msgstr "குறியீட்டை சரி செய்துவிட்டு ஏற்றவும்"
#: tools/FixEncoding.java:57
msgid "Discard all changes and reload sketch?"
-msgstr "அணைத்து மாற்றங்களையும் ஒதிக்கிவிட்டு வரைவை ஏற்றவா?"
+msgstr "அணைத்து மாற்றங்களையும் ஒதிக்கிவிட்டு வரைவை ஏற்றவா?"
#: tools/FixEncoding.java:77
msgid ""
"An error occurred while trying to fix the file encoding.\n"
"Do not attempt to save this sketch as it may overwrite\n"
"the old version. Use Open to re-open the sketch and try again.\n"
-msgstr ""
-"கோப்பு குறியீட்டை சரிசெய்ய முயலும்போது ஒரு பிழை ஏற்பட்டுவிட்டது.\n"
-"இந்திய வரைவை சேமிக்க முயலவேண்டாம். ஏனென்றால், அது பழைய பதிப்பை \n"
-"மற்றியமைத்துவிடும். வரைவை மறுபடியும் திறந்து முயற்சித்துப்பார்க்கவும்.\n"
+msgstr ""
+"கோப்பு குறியீட்டை சரிசெய்ய முயலும்போது ஒரு பிழை ஏற்பட்டுவிட்டது.\n"
+"இந்திய வரைவை சேமிக்க முயலவேண்டாம். ஏனென்றால், அது பழைய பதிப்பை \n"
+"மற்றியமைத்துவிடும். வரைவை மறுபடியும் திறந்து முயற்சித்துப்பார்க்கவும்.\n"
#: tools/Archiver.java:48
msgid "Archive Sketch"
-msgstr "வரைவை ஆவணப்படுத்தவும்"
+msgstr "வரைவை ஆவணப்படுத்தவும்"
#: tools/Archiver.java:59
msgid "yyMMdd"
-msgstr "yyMMdd"
+msgstr "yyMMdd"
#: tools/Archiver.java:74
msgid "Couldn't archive sketch"
-msgstr "வரைவை ஆவணப்படுத்த முடியவில்லை"
+msgstr "வரைவை ஆவணப்படுத்த முடியவில்லை"
#: tools/Archiver.java:75
msgid ""
"Archiving the sketch has been canceled because\n"
"the sketch couldn't save properly."
-msgstr ""
-"வரைவை ஆவணப்படுத்துவது ரத்து செய்யப்பட்டது. ஏனென்றால், \n"
-"அந்த வரைவை சரியாக சேமிக்க முடியவில்லை."
+msgstr ""
+"வரைவை ஆவணப்படுத்துவது ரத்து செய்யப்பட்டது. ஏனென்றால், \n"
+"அந்த வரைவை சரியாக சேமிக்க முடியவில்லை."
#: tools/Archiver.java:109
msgid "Archive sketch as:"
-msgstr "என வரைவை அவனப்படுது:"
+msgstr "என வரைவை அவனப்படுது:"
#: tools/Archiver.java:139
msgid "Archive sketch canceled."
-msgstr "வரைவை ஆவணப்படுத்துவது ரத்து செய்யப்பட்டது."
+msgstr "வரைவை ஆவணப்படுத்துவது ரத்து செய்யப்பட்டது."
#: SketchCode.java:83
#, java-format
msgid "Error while loading code {0}"
-msgstr "குறியீடு {0}ஐ மேலேற்றும்போது பிழை ஏற்பட்டுவிட்டது "
+msgstr "குறியீடு {0}ஐ மேலேற்றும்போது பிழை ஏற்பட்டுவிட்டது "
#: SketchCode.java:258
#, java-format
@@ -651,145 +651,145 @@ msgstr ""
#: Sketch.java:278 Sketch.java:307 Sketch.java:581 Sketch.java:970
msgid "Sketch is Read-Only"
-msgstr "வாசிப்பு வரைவு"
+msgstr "வாசிப்பு வரைவு"
#: Sketch.java:279 Sketch.java:308 Sketch.java:582 Sketch.java:971
msgid ""
"Some files are marked \"read-only\", so you'll\n"
"need to re-save the sketch in another location,\n"
"and try again."
-msgstr ""
-"சில கோப்புகள் \"read-only\" என குறிக்கப்பட்டுள்ளது,எனவே நீங்கள் \n"
-"வேறு இடத்தில வரைவை மறுபடியும் சேமிக்கவும்,\n"
-"பின்பு முயற்சிக்கவும்."
+msgstr ""
+"சில கோப்புகள் \"read-only\" என குறிக்கப்பட்டுள்ளது,எனவே நீங்கள் \n"
+"வேறு இடத்தில வரைவை மறுபடியும் சேமிக்கவும்,\n"
+"பின்பு முயற்சிக்கவும்."
#: Sketch.java:286
msgid "Name for new file:"
-msgstr "புதிய கோப்பின் பெயர்:"
+msgstr "புதிய கோப்பின் பெயர்:"
#: Sketch.java:298
msgid "Sketch is Untitled"
-msgstr "வரைவு பெயரிடப்படவில்லை"
+msgstr "வரைவு பெயரிடப்படவில்லை"
#: Sketch.java:299
msgid ""
"How about saving the sketch first \n"
"before trying to rename it?"
-msgstr ""
-"பெயரை மாற்றும் முன் வரைவை \n"
-"சேமிப்பது பற்றி என்ன நினைக்கிறீர்கள்?"
+msgstr ""
+"பெயரை மாற்றும் முன் வரைவை \n"
+"சேமிப்பது பற்றி என்ன நினைக்கிறீர்கள்?"
#: Sketch.java:359 Sketch.java:366 Sketch.java:377
msgid "Problem with rename"
-msgstr "பெயர்மாற்றத்தில் பிரச்சனை எழுந்துள்ளது"
+msgstr "பெயர்மாற்றத்தில் பிரச்சனை எழுந்துள்ளது"
#: Sketch.java:360
msgid "The name cannot start with a period."
-msgstr "பெயர் முற்றுப்புள்ளி கொண்டு ஆரம்பிக்கக்கூடாது."
+msgstr "பெயர் முற்றுப்புள்ளி கொண்டு ஆரம்பிக்கக்கூடாது."
#: Sketch.java:368
#, java-format
msgid "\".{0}\" is not a valid extension."
-msgstr "\".{0}\" சரியான நீடிப்பு கிடையாது."
+msgstr "\".{0}\" சரியான நீடிப்பு கிடையாது."
#: Sketch.java:378
msgid ""
"The main file can't use an extension.\n"
"(It may be time for your to graduate to a\n"
"\"real\" programming environment)"
-msgstr ""
-"முக்கிய கோப்பு ஒரு நீட்டிப்பை பயன்படுத்த முடியாது.\n"
-"(இந்த நேரம் நீங்கள் நிரலாக்க சூழல்\n"
-"\"real\"ஐ பயன்படுத்த ஏதுவானது)"
+msgstr ""
+"முக்கிய கோப்பு ஒரு நீட்டிப்பை பயன்படுத்த முடியாது.\n"
+"(இந்த நேரம் நீங்கள் நிரலாக்க சூழல்\n"
+"\"real\"ஐ பயன்படுத்த ஏதுவானது)"
#: Sketch.java:400 Sketch.java:414 Sketch.java:423 Sketch.java:863
msgid "Nope"
-msgstr "இல்லை"
+msgstr "இல்லை"
#: Sketch.java:402
#, java-format
msgid "A file named \"{0}\" already exists in \"{1}\""
-msgstr "\"{1}\"ல் ஏற்கனவே \"{0}\" என்ற பேரில் கோப்பு உள்ளது"
+msgstr "\"{1}\"ல் ஏற்கனவே \"{0}\" என்ற பேரில் கோப்பு உள்ளது"
#: Sketch.java:415
msgid "You can't have a .cpp file with the same name as the sketch."
-msgstr "நீங்கள் வரைவின் பெயரிலேயே .cpp கோப்பை உருவாக்க முடியாது."
+msgstr "நீங்கள் வரைவின் பெயரிலேயே .cpp கோப்பை உருவாக்க முடியாது."
#: Sketch.java:425
msgid ""
"You can't rename the sketch to \"{0}\"\n"
"because the sketch already has a .cpp file with that name."
-msgstr ""
-"நீங்கள் \"{0}\" என்று வரைவை பெயர்மாற்றம் செய்ய முடியாது\n"
-"ஏனென்றால் அந்த வரைவு ஏற்கனவே அதே பெயரில் ஒரு .cpp கோப்பை கொண்டுள்ளது."
+msgstr ""
+"நீங்கள் \"{0}\" என்று வரைவை பெயர்மாற்றம் செய்ய முடியாது\n"
+"ஏனென்றால் அந்த வரைவு ஏற்கனவே அதே பெயரில் ஒரு .cpp கோப்பை கொண்டுள்ளது."
#: Sketch.java:459
msgid "Cannot Rename"
-msgstr "மறுபெயரிட முடியாது"
+msgstr "மறுபெயரிட முடியாது"
#: Sketch.java:461
#, java-format
msgid "Sorry, a sketch (or folder) named \"{0}\" already exists."
-msgstr "மன்னிக்கவும், \"{0}\"என்று ஏற்கனவே ஒரு வரைவு (அல்லது உறை) உள்ளது."
+msgstr "மன்னிக்கவும், \"{0}\"என்று ஏற்கனவே ஒரு வரைவு (அல்லது உறை) உள்ளது."
#: Sketch.java:479
msgid "Could not rename the sketch. (0)"
-msgstr "வரைவை மருபெயரிட முடியவில்லை. (0)"
+msgstr "வரைவை மருபெயரிட முடியவில்லை. (0)"
#: Sketch.java:487 Sketch.java:532
#, java-format
msgid "Could not rename \"{0}\" to \"{1}\""
-msgstr "\"{0}\"ஐ \"{1}\"என மருபெயரிட முடியவில்லை "
+msgstr "\"{0}\"ஐ \"{1}\"என மருபெயரிட முடியவில்லை "
#: Sketch.java:500
msgid "Could not rename the sketch. (1)"
-msgstr "வரைவை மருபெயரிட முடியவில்லை. (1)"
+msgstr "வரைவை மருபெயரிட முடியவில்லை. (1)"
#: Sketch.java:507
msgid "Could not rename the sketch. (2)"
-msgstr "வரைவை மருபெயரிட முடியவில்லை. (2)"
+msgstr "வரைவை மருபெயரிட முடியவில்லை. (2)"
#: Sketch.java:544
msgid "createNewFile() returned false"
-msgstr "createNewFile() தவறென கூறுகிறது"
+msgstr "createNewFile() தவறென கூறுகிறது"
#: Sketch.java:591
msgid "Are you sure you want to delete this sketch?"
-msgstr "நீங்கள் இந்த வரைவை நீக்க வேண்டும் என்பதில் உறுதியாக இருக்கிறீர்களா?"
+msgstr "நீங்கள் இந்த வரைவை நீக்க வேண்டும் என்பதில் உறுதியாக இருக்கிறீர்களா?"
#: Sketch.java:592
#, java-format
msgid "Are you sure you want to delete \"{0}\"?"
-msgstr "நீங்கள் \"{0}\"ஐ நீக்க வேண்டும் என்பதில் உறுதியாக இருக்கிறீர்களா?"
+msgstr "நீங்கள் \"{0}\"ஐ நீக்க வேண்டும் என்பதில் உறுதியாக இருக்கிறீர்களா?"
#: Sketch.java:595 EditorHeader.java:314
msgid "Delete"
-msgstr "நீக்கு"
+msgstr "நீக்கு"
#: Sketch.java:620
msgid "Couldn't do it"
-msgstr "அதை செய்ய முடியவில்லை"
+msgstr "அதை செய்ய முடியவில்லை"
#: Sketch.java:621
#, java-format
msgid "Could not delete \"{0}\"."
-msgstr "\"{0}\"ஐ நீக்க முடியவில்லை."
+msgstr "\"{0}\"ஐ நீக்க முடியவில்லை."
#: Sketch.java:651
msgid "removeCode: internal error.. could not find code"
-msgstr "removeCode: உள் பிழை .. குறியீட்டை கண்டுபிடிக்க முடியவில்லை"
+msgstr "removeCode: உள் பிழை .. குறியீட்டை கண்டுபிடிக்க முடியவில்லை"
#: Sketch.java:724
msgid "Sketch is read-only"
-msgstr "வரைவை வாசிக்க மட்டுமே முடியும்"
+msgstr "வரைவை வாசிக்க மட்டுமே முடியும்"
#: Sketch.java:725
msgid ""
"Some files are marked \"read-only\", so you'll\n"
"need to re-save this sketch to another location."
-msgstr ""
-"சில கோப்புகள் \"read-only\" என குறிப்பிடப்பட்டுள்ளது, எனவே \n"
-"நீங்கள் மற்றொரு இடத்தில் இந்த வரைவை மீண்டும் சேமிக்க வேண்டும்."
+msgstr ""
+"சில கோப்புகள் \"read-only\" என குறிப்பிடப்பட்டுள்ளது, எனவே \n"
+"நீங்கள் மற்றொரு இடத்தில் இந்த வரைவை மீண்டும் சேமிக்க வேண்டும்."
#: Sketch.java:743
msgid ""
@@ -800,219 +800,219 @@ msgid ""
"disable this in the Preferences dialog.\n"
"\n"
"Save sketch and update its extension?"
-msgstr ""
-"Arduino 1.0ல் ,.pdeல் இருந்து .inoவுக்கு முன்னிருப்பு கோப்பு நீட்டிப்பு \n"
-"மாறிவிட்டது. புதிய வரைவுகள் (\"Save-As\" உருவாக்கியவை உட்பட),\n"
-"புதிய நீட்டிப்பை பயன்படுத்தும். The extension\n"
-"தற்போதுள்ள வரைவுகளின் நீட்டிப்பு செமிதவுடன் புதுப்பிக்கப்படும், ஆனால் நீங்கள்\n"
-"இதை விருப்பங்கள் உரையாடலில் செயலிழக்க செய்யலாம்.\n"
-"\n"
-"வரைவை சேமித்து, அதன் நீட்டிப்பை புதுப்பிக்கவா?"
+msgstr ""
+"Arduino 1.0ல் ,.pdeல் இருந்து .inoவுக்கு முன்னிருப்பு கோப்பு நீட்டிப்பு \n"
+"மாறிவிட்டது. புதிய வரைவுகள் (\"Save-As\" உருவாக்கியவை உட்பட),\n"
+"புதிய நீட்டிப்பை பயன்படுத்தும். The extension\n"
+"தற்போதுள்ள வரைவுகளின் நீட்டிப்பு செமிதவுடன் புதுப்பிக்கப்படும், ஆனால் நீங்கள்\n"
+"இதை விருப்பங்கள் உரையாடலில் செயலிழக்க செய்யலாம்.\n"
+"\n"
+"வரைவை சேமித்து, அதன் நீட்டிப்பை புதுப்பிக்கவா?"
#: Sketch.java:750
msgid ".pde -> .ino"
-msgstr ".pde -> .ino"
+msgstr ".pde -> .ino"
#: Sketch.java:829
msgid "Save sketch folder as..."
-msgstr "என வரைவை கொப்புரையில் சேமிக்கவும்..."
+msgstr "என வரைவை கொப்புரையில் சேமிக்கவும்..."
#: Sketch.java:865
msgid ""
"You can't save the sketch as \"{0}\"\n"
"because the sketch already has a .cpp file with that name."
-msgstr ""
-"\"{0}\" என வரைவை நீங்கள் சேமிக்க முடியாது\n"
-"ஏனென்றால், ஏற்கனவே அந்தப்பெயரில் .cpp கோப்பு உள்ளது."
+msgstr ""
+"\"{0}\" என வரைவை நீங்கள் சேமிக்க முடியாது\n"
+"ஏனென்றால், ஏற்கனவே அந்தப்பெயரில் .cpp கோப்பு உள்ளது."
#: Sketch.java:886
msgid "How very Borges of you"
-msgstr "நீங்கள் மிகவும் திறமைசாலி"
+msgstr "நீங்கள் மிகவும் திறமைசாலி"
#: Sketch.java:887
msgid ""
"You cannot save the sketch into a folder\n"
"inside itself. This would go on forever."
-msgstr ""
-"நீங்கள் வரைவுக்குள் உள்ள உறையிலேயே அந்த வரைவை சேமிக்க\n"
-"முடியாது. இது நீண்டுகொண்டே போகும்."
+msgstr ""
+"நீங்கள் வரைவுக்குள் உள்ள உறையிலேயே அந்த வரைவை சேமிக்க\n"
+"முடியாது. இது நீண்டுகொண்டே போகும்."
#: Sketch.java:979
msgid "Select an image or other data file to copy to your sketch"
-msgstr "உங்கள் வரைவுக்குள் நகலெடுக்க ஒரு படத்தை அல்லது தரவு கோப்பை தேர்வு செய்யவும்"
+msgstr "உங்கள் வரைவுக்குள் நகலெடுக்க ஒரு படத்தை அல்லது தரவு கோப்பை தேர்வு செய்யவும்"
#: Sketch.java:1047
#, java-format
msgid "Replace the existing version of {0}?"
-msgstr "{0}வின் தற்போதைய பதிப்பை மாற்றவா?"
+msgstr "{0}வின் தற்போதைய பதிப்பை மாற்றவா?"
#: Sketch.java:1069 Sketch.java:1092
msgid "Error adding file"
-msgstr "கோப்பை சேர்ப்பதில் பிழை"
+msgstr "கோப்பை சேர்ப்பதில் பிழை"
#: Sketch.java:1070
#, java-format
msgid "Could not delete the existing ''{0}'' file."
-msgstr "தற்போதுள்ள ''{0}'' கோப்பை நீக்க முடியவில்லை."
+msgstr "தற்போதுள்ள ''{0}'' கோப்பை நீக்க முடியவில்லை."
#: Sketch.java:1078
msgid "You can't fool me"
-msgstr "நீங்கள் என்னை ஏமாற்ற முடியாது"
+msgstr "நீங்கள் என்னை ஏமாற்ற முடியாது"
#: Sketch.java:1079
msgid ""
"This file has already been copied to the\n"
"location from which where you're trying to add it.\n"
"I ain't not doin nuthin'."
-msgstr ""
-"இந்த கோப்பு நீங்கள் நகலெடுக்க முயலும் இடத்தில் \n"
-"ஏற்கனவே செர்கப்பட்டுவிட்டது.\n"
-"நான் என்னால் முடிந்த அனைத்தையும் செய்துவிட்டேன்."
+msgstr ""
+"இந்த கோப்பு நீங்கள் நகலெடுக்க முயலும் இடத்தில் \n"
+"ஏற்கனவே செர்கப்பட்டுவிட்டது.\n"
+"நான் என்னால் முடிந்த அனைத்தையும் செய்துவிட்டேன்."
#: Sketch.java:1093
#, java-format
msgid "Could not add ''{0}'' to the sketch."
-msgstr "''{0}''ஐ வரைவில் சேர்க்க முடியவில்லை."
+msgstr "''{0}''ஐ வரைவில் சேர்க்க முடியவில்லை."
#: Sketch.java:1393 Sketch.java:1424
msgid "Build folder disappeared or could not be written"
-msgstr "கட்டுமான கோப்புறையை காணவில்லை (அ) எழுதப்பட்ட முடியவில்லை"
+msgstr "கட்டுமான கோப்புறையை காணவில்லை (அ) எழுதப்பட்ட முடியவில்லை"
#: Sketch.java:1408
msgid "Could not find main class"
-msgstr "முக்கிய வகுப்பை கண்டுபிடிக்க முடியவில்லை"
+msgstr "முக்கிய வகுப்பை கண்டுபிடிக்க முடியவில்லை"
#: Sketch.java:1433
#, java-format
msgid "Uncaught exception type: {0}"
-msgstr "பிடிக்கமுடியாத விதிவிலக்கு வகை: {0}"
+msgstr "பிடிக்கமுடியாத விதிவிலக்கு வகை: {0}"
#: Sketch.java:1465
#, java-format
msgid "Problem moving {0} to the build folder"
-msgstr "{0}ஐ கட்டுமான உறைக்குள் நகற்றுவதில் பிரச்சினை"
+msgstr "{0}ஐ கட்டுமான உறைக்குள் நகற்றுவதில் பிரச்சினை"
#: Sketch.java:1661
msgid "Uploading..."
-msgstr "பதிவேற்றுகிறது..."
+msgstr "பதிவேற்றுகிறது..."
#: Sketch.java:1684
#, java-format
msgid "Binary sketch size: {0} bytes (of a {1} byte maximum)"
-msgstr "இரும வரைவின் அளவு: {0} எண்பிட்டுகள் (அதிகபட்ச அளவு{1})"
+msgstr "இரும வரைவின் அளவு: {0} எண்பிட்டுகள் (அதிகபட்ச அளவு{1})"
#: Sketch.java:1689
msgid "Couldn't determine program size: {0}"
-msgstr "நிரல் அளவை தீர்மானிக்க முடியவில்லை: {0}"
+msgstr "நிரல் அளவை தீர்மானிக்க முடியவில்லை: {0}"
#: Sketch.java:1694
msgid ""
"Sketch too big; see http://www.arduino.cc/en/Guide/Troubleshooting#size for "
"tips on reducing it."
-msgstr ""
-"வரைவின் பெரியதாக உள்ளது; அதை குறைப்பது பற்றிய வழிமுறைகளுக்கு,\n"
-"http://www.arduino.cc/en/Guide/Troubleshooting#size%20%E0%AE%90%20%E0%AE%AA%E0%AE%BE%E0%AE%B0%E0%AF%8D%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AE%B5%E0%AF%81%E0%AE%AE%E0%AF%8D."
+msgstr ""
+"வரைவின் பெரியதாக உள்ளது; அதை குறைப்பது பற்றிய வழிமுறைகளுக்கு,\n"
+"http://www.arduino.cc/en/Guide/Troubleshooting#size%20%E0%AE%90%20%E0%AE%AA%E0%AE%BE%E0%AE%B0%E0%AF%8D%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AE%B5%E0%AF%81%E0%AE%AE%E0%AF%8D."
#: Sketch.java:1754
msgid "Missing the */ from the end of a /* comment */"
-msgstr "/* comment */ல் */ஐ காணவில்லை"
+msgstr "/* comment */ல் */ஐ காணவில்லை"
#: Sketch.java:1796
msgid "Sketch Disappeared"
-msgstr "வரைவு மறைந்துவிட்டது"
+msgstr "வரைவு மறைந்துவிட்டது"
#: Sketch.java:1797
msgid ""
"The sketch folder has disappeared.\n"
" Will attempt to re-save in the same location,\n"
"but anything besides the code will be lost."
-msgstr ""
-"வரைவு உறை மறைந்துவிட்டது.\n"
-" அதே இடத்தில சேமிக்க மறுபடியும் முயற்சிக்கிறேன்,\n"
-"ஆனால், குறியீட்டை தவிர மற்றவைகளை இழந்துவிடுவீர்கள்."
+msgstr ""
+"வரைவு உறை மறைந்துவிட்டது.\n"
+" அதே இடத்தில சேமிக்க மறுபடியும் முயற்சிக்கிறேன்,\n"
+"ஆனால், குறியீட்டை தவிர மற்றவைகளை இழந்துவிடுவீர்கள்."
#: Sketch.java:1810
msgid "Could not re-save sketch"
-msgstr "வரைவை மறுபடியும் சேமிக்க இயலவில்லை"
+msgstr "வரைவை மறுபடியும் சேமிக்க இயலவில்லை"
#: Sketch.java:1811
msgid ""
"Could not properly re-save the sketch. You may be in trouble at this point,\n"
"and it might be time to copy and paste your code to another text editor."
-msgstr ""
-"சரியாக வரைவை மீண்டும் சேமிக்க முடியவில்லை. நீங்கள் இந்த இடத்தில் பிரச்சனையில் இருக்கலாம்,\n"
-"இதுவே உங்கள் குறியீட்டை நகலெடுத்து மற்றொரு உரை திருத்தியில் ஓட்டுவதற்கான சரியான நேரம்."
+msgstr ""
+"சரியாக வரைவை மீண்டும் சேமிக்க முடியவில்லை. நீங்கள் இந்த இடத்தில் பிரச்சனையில் இருக்கலாம்,\n"
+"இதுவே உங்கள் குறியீட்டை நகலெடுத்து மற்றொரு உரை திருத்தியில் ஓட்டுவதற்கான சரியான நேரம்."
#: Sketch.java:2060
msgid ""
"The sketch name had to be modified. Sketch names can only consist\n"
"of ASCII characters and numbers (but cannot start with a number).\n"
"They should also be less less than 64 characters long."
-msgstr ""
-"வரைவின் பெயர் மாற்றப்பட்டுள்ளது. வரைவுப்பெயர்கள் ASCII எழுத்துக்கள் \n"
-"மற்றும் எண்களை கொண்டிருக்கலாம்(ஆனால் எண்ணில் ஆரம்பமாகக்கூடாது).\n"
-"அவை 64 எழுத்துகளுக்கு மேல் இருக்கக்கூடாது."
+msgstr ""
+"வரைவின் பெயர் மாற்றப்பட்டுள்ளது. வரைவுப்பெயர்கள் ASCII எழுத்துக்கள் \n"
+"மற்றும் எண்களை கொண்டிருக்கலாம்(ஆனால் எண்ணில் ஆரம்பமாகக்கூடாது).\n"
+"அவை 64 எழுத்துகளுக்கு மேல் இருக்கக்கூடாது."
#: debug/Uploader.java:52
msgid "https://developer.berlios.de/bugs/?group_id=3590"
-msgstr "https://developer.berlios.de/bugs/?group_id=3590"
+msgstr "https://developer.berlios.de/bugs/?group_id=3590"
#: debug/Uploader.java:54 debug/Compiler.java:43
#, java-format
msgid "Compiler error, please submit this code to {0}"
-msgstr "தொகுப்பு பிழை, தயவு செய்து குறியீட்டை {0}க்கு சமர்பிக்கவும்"
+msgstr "தொகுப்பு பிழை, தயவு செய்து குறியீட்டை {0}க்கு சமர்பிக்கவும்"
#: debug/Uploader.java:199
#, java-format
msgid ""
"the selected serial port {0} does not exist or your board is not connected"
-msgstr ""
-"தேர்வு செய்த தொடர் துறை {0} இல்லை (அ)உங்கள் பலகை இணைக்கப்படவில்லை"
+msgstr ""
+"தேர்வு செய்த தொடர் துறை {0} இல்லை (அ)உங்கள் பலகை இணைக்கப்படவில்லை"
#: debug/Uploader.java:203
msgid ""
"Device is not responding, check the right serial port is selected or RESET "
"the board right before exporting"
-msgstr ""
-"சாதனம் பதிலளிக்கவில்லை, சரியான தொடர் துறையை தேர்வு செய்யவும் (அ) ஏற்றுமதி செய்யும் முன்"
-"பலகையை மீட்டமைக்கவும்"
+msgstr ""
+"சாதனம் பதிலளிக்கவில்லை, சரியான தொடர் துறையை தேர்வு செய்யவும் (அ) ஏற்றுமதி செய்யும் முன்"
+"பலகையை மீட்டமைக்கவும்"
#: debug/Uploader.java:209
msgid ""
"Problem uploading to board. See http://www.arduino.cc/en/Guide/"
"Troubleshooting#upload for suggestions."
-msgstr ""
-"பலகைக்கு பதிவேற்றம் செய்வதில் பிரச்சனை எழுந்துள்ளது. http://www.arduino.cc/en/Guide/"
-"Troubleshooting#upload ஐ பரிந்துரைகளுக்கு பார்க்கவும்."
+msgstr ""
+"பலகைக்கு பதிவேற்றம் செய்வதில் பிரச்சனை எழுந்துள்ளது. http://www.arduino.cc/en/Guide/"
+"Troubleshooting#upload ஐ பரிந்துரைகளுக்கு பார்க்கவும்."
#: debug/Uploader.java:213
msgid ""
"Wrong microcontroller found. Did you select the right board from the Tools "
"> Board menu?"
-msgstr ""
-"தவறான நுண் கட்டுப்பாட்டுக் கருவி கண்டறியப்பட்டது.நீங்கள் சரியான பலகையை கருவிகள்"
-"> பலகை பட்டியலில் தேர்வு செய்தீர்களா?"
+msgstr ""
+"தவறான நுண் கட்டுப்பாட்டுக் கருவி கண்டறியப்பட்டது.நீங்கள் சரியான பலகையை கருவிகள்"
+"> பலகை பட்டியலில் தேர்வு செய்தீர்களா?"
#: debug/Compiler.java:41
msgid "http://code.google.com/p/arduino/issues/list"
-msgstr "http://code.google.com/p/arduino/issues/list"
+msgstr "http://code.google.com/p/arduino/issues/list"
#: debug/Compiler.java:79
msgid "No board selected; please choose a board from the Tools > Board menu."
-msgstr "பலகை தேர்வு செய்யப்படவில்லை; ஒரு பலகையை கருவிகள் > பலகை பட்டியலில் தேர்வு செய்யவும்."
+msgstr "பலகை தேர்வு செய்யப்படவில்லை; ஒரு பலகையை கருவிகள் > பலகை பட்டியலில் தேர்வு செய்யவும்."
#: debug/Compiler.java:422
#, java-format
msgid "{0} returned {1}"
-msgstr "{0},{1}என திருப்பியது"
+msgstr "{0},{1}என திருப்பியது"
#: debug/Compiler.java:426
msgid "Error compiling."
-msgstr "தொகுப்பதில் பிழை."
+msgstr "தொகுப்பதில் பிழை."
#: debug/Compiler.java:465
msgid "Please import the SPI library from the Sketch > Import Library menu."
-msgstr "SPI நூலகத்தை வரைவு > நூலக இறக்குமதி பட்டியலில் இருந்து இறக்குமதி செய்யவும்."
+msgstr "SPI நூலகத்தை வரைவு > நூலக இறக்குமதி பட்டியலில் இருந்து இறக்குமதி செய்யவும்."
#: debug/Compiler.java:466
msgid ""
@@ -1021,16 +1021,16 @@ msgid ""
"You appear to be using it or another library that depends on the SPI "
"library.\n"
"\n"
-msgstr ""
-"\n"
-"Arduino 0019வின் படி, ஈதர்நெட் நூலகம் SPI நூலகத்தையே சார்ந்துள்ளது.\n"
-"நீங்கள் அந்த நூலகம் (அ) அதை சார்ந்துள்ள நூலகத்தையே "
-"பயன்படுத்துகிறீர்கள்.\n"
-"\n"
+msgstr ""
+"\n"
+"Arduino 0019வின் படி, ஈதர்நெட் நூலகம் SPI நூலகத்தையே சார்ந்துள்ளது.\n"
+"நீங்கள் அந்த நூலகம் (அ) அதை சார்ந்துள்ள நூலகத்தையே "
+"பயன்படுத்துகிறீர்கள்.\n"
+"\n"
#: debug/Compiler.java:471
msgid "The 'BYTE' keyword is no longer supported."
-msgstr "'BYTE' குறிச்சொல் இனிமேல் உபயோகப்படாது."
+msgstr "'BYTE' குறிச்சொல் இனிமேல் உபயோகப்படாது."
#: debug/Compiler.java:472
msgid ""
@@ -1038,15 +1038,15 @@ msgid ""
"As of Arduino 1.0, the 'BYTE' keyword is no longer supported.\n"
"Please use Serial.write() instead.\n"
"\n"
-msgstr ""
-"\n"
-"Arduino 1.0ன் படி, 'BYTE' குறிச்சொல் இனிமேல் உபயோகப்படாது.\n"
-" Serial.write()ஐ அதற்கு மாற்றாக பயன்படுத்தவும்.\n"
-"\n"
+msgstr ""
+"\n"
+"Arduino 1.0ன் படி, 'BYTE' குறிச்சொல் இனிமேல் உபயோகப்படாது.\n"
+" Serial.write()ஐ அதற்கு மாற்றாக பயன்படுத்தவும்.\n"
+"\n"
#: debug/Compiler.java:477
msgid "The Server class has been renamed EthernetServer."
-msgstr "Server class, EthernetServer என பெயர்மாற்றப்பட்டுள்ளது."
+msgstr "Server class, EthernetServer என பெயர்மாற்றப்பட்டுள்ளது."
#: debug/Compiler.java:478
msgid ""
@@ -1054,15 +1054,15 @@ msgid ""
"As of Arduino 1.0, the Server class in the Ethernet library has been renamed "
"to EthernetServer.\n"
"\n"
-msgstr ""
-"\n"
-"Arduino 1.0ன் படி, ஈதர்நெட் நூலகத்தில் உள்ள Server class, EthernetServer என \n"
-"பெயர்மாற்றப்பட்டுள்ளது.\n"
-"\n"
+msgstr ""
+"\n"
+"Arduino 1.0ன் படி, ஈதர்நெட் நூலகத்தில் உள்ள Server class, EthernetServer என \n"
+"பெயர்மாற்றப்பட்டுள்ளது.\n"
+"\n"
#: debug/Compiler.java:483
msgid "The Client class has been renamed EthernetClient."
-msgstr "Client class, EthernetClient என பெயர்மாற்றப்பட்டுள்ளது."
+msgstr "Client class, EthernetClient என பெயர்மாற்றப்பட்டுள்ளது."
#: debug/Compiler.java:484
msgid ""
@@ -1070,15 +1070,15 @@ msgid ""
"As of Arduino 1.0, the Client class in the Ethernet library has been renamed "
"to EthernetClient.\n"
"\n"
-msgstr ""
-"\n"
-"Arduino 1.0ன் படி, ஈதர்நெட் நூலகத்தில் உள்ள Client class, EthernetClient என \n"
-"பெயர்மாற்றப்பட்டுள்ளது.\n"
-"\n"
+msgstr ""
+"\n"
+"Arduino 1.0ன் படி, ஈதர்நெட் நூலகத்தில் உள்ள Client class, EthernetClient என \n"
+"பெயர்மாற்றப்பட்டுள்ளது.\n"
+"\n"
#: debug/Compiler.java:489
msgid "The Udp class has been renamed EthernetUdp."
-msgstr "Udp class, EthernetUdp என பெயர்மாற்றப்பட்டுள்ளது."
+msgstr "Udp class, EthernetUdp என பெயர்மாற்றப்பட்டுள்ளது."
#: debug/Compiler.java:490
msgid ""
@@ -1086,15 +1086,15 @@ msgid ""
"As of Arduino 1.0, the Udp class in the Ethernet library has been renamed to "
"EthernetClient.\n"
"\n"
-msgstr ""
-"\n"
-"Arduino 1.0ன் படி, ஈதர்நெட் நூலகத்தில் உள்ள Udp class, EthernetUdp என \n"
-"பெயர்மாற்றப்பட்டுள்ளது.\n"
-"\n"
+msgstr ""
+"\n"
+"Arduino 1.0ன் படி, ஈதர்நெட் நூலகத்தில் உள்ள Udp class, EthernetUdp என \n"
+"பெயர்மாற்றப்பட்டுள்ளது.\n"
+"\n"
#: debug/Compiler.java:495
msgid "Wire.send() has been renamed Wire.write()."
-msgstr "Wire.send(), Wire.write() என பெயர்மாற்றப்பட்டுள்ளது."
+msgstr "Wire.send(), Wire.write() என பெயர்மாற்றப்பட்டுள்ளது."
#: debug/Compiler.java:496
msgid ""
@@ -1102,15 +1102,15 @@ msgid ""
"As of Arduino 1.0, the Wire.send() function was renamed to Wire.write() for "
"consistency with other libraries.\n"
"\n"
-msgstr ""
-"\n"
-"Arduino 1.0ன் படி, Wire.send() செயல்கூறு, Wire.write() என \n"
-"நிலைத்தன்மைக்காக பெயர்மாற்றப்பட்டுள்ளது.\n"
-"\n"
+msgstr ""
+"\n"
+"Arduino 1.0ன் படி, Wire.send() செயல்கூறு, Wire.write() என \n"
+"நிலைத்தன்மைக்காக பெயர்மாற்றப்பட்டுள்ளது.\n"
+"\n"
#: debug/Compiler.java:501
msgid "Wire.receive() has been renamed Wire.read()."
-msgstr "Wire.receive(), Wire.read() என பெயர்மாற்றப்பட்டுள்ளது"
+msgstr "Wire.receive(), Wire.read() என பெயர்மாற்றப்பட்டுள்ளது"
#: debug/Compiler.java:502
msgid ""
@@ -1118,61 +1118,61 @@ msgid ""
"As of Arduino 1.0, the Wire.receive() function was renamed to Wire.read() "
"for consistency with other libraries.\n"
"\n"
-msgstr ""
-"\n"
-"Arduino 1.0ன் படி, Wire.receive() செயல்கூறு, Wire.read() என \n"
-"நிலைத்தன்மைக்காக பெயர்மாற்றப்பட்டுள்ளது.\n"
-"\n"
+msgstr ""
+"\n"
+"Arduino 1.0ன் படி, Wire.receive() செயல்கூறு, Wire.read() என \n"
+"நிலைத்தன்மைக்காக பெயர்மாற்றப்பட்டுள்ளது.\n"
+"\n"
#: EditorConsole.java:152
msgid "Console Error"
-msgstr "பணியக பிழை"
+msgstr "பணியக பிழை"
#: EditorConsole.java:153
msgid ""
"A problem occurred while trying to open the\n"
"files used to store the console output."
-msgstr ""
-"பணியக வெளிப்பாடுகலை சேமிக்க பயன்படும் கோப்புகளை திறக்க \n"
-"முயற்சிக்கும்போது பிரச்சனை ஏற்பட்டுவிட்டது."
+msgstr ""
+"பணியக வெளிப்பாடுகலை சேமிக்க பயன்படும் கோப்புகளை திறக்க \n"
+"முயற்சிக்கும்போது பிரச்சனை ஏற்பட்டுவிட்டது."
#: Base.java:184
msgid "Non-fatal error while setting the Look & Feel."
-msgstr "தோற்றம் & உருவத்தை அமைக்கும்போது அபாயமில்லாத பிழை ஏற்பட்டுவிட்டது."
+msgstr "தோற்றம் & உருவத்தை அமைக்கும்போது அபாயமில்லாத பிழை ஏற்பட்டுவிட்டது."
#: Base.java:185
msgid "The error message follows, however Arduino should run fine."
-msgstr "பிழை செய்திகள் வரும், ஆனாலும் Arduino நன்றாகவே இயங்கும்."
+msgstr "பிழை செய்திகள் வரும், ஆனாலும் Arduino நன்றாகவே இயங்கும்."
#: Base.java:220
msgid "Problem Setting the Platform"
-msgstr "இயங்குதளம் அமைப்பதில் பிரச்சினை"
+msgstr "இயங்குதளம் அமைப்பதில் பிரச்சினை"
#: Base.java:221
msgid ""
"An unknown error occurred while trying to load\n"
"platform-specific code for your machine."
-msgstr ""
-"உங்கள் கணினிக்கு இயங்குதளம்-குறிப்பிட்ட குறியீட்டை ஏற்ற \n"
-"முயற்சிக்கும்போது ஒரு அறியப்படாத பிழை ஏற்பட்டது."
+msgstr ""
+"உங்கள் கணினிக்கு இயங்குதளம்-குறிப்பிட்ட குறியீட்டை ஏற்ற \n"
+"முயற்சிக்கும்போது ஒரு அறியப்படாத பிழை ஏற்பட்டது."
#: Base.java:232
msgid "Please install JDK 1.5 or later"
-msgstr "தயவுசெய்து JDK 1.5 (அ) புதியதை நிறுவவும்"
+msgstr "தயவுசெய்து JDK 1.5 (அ) புதியதை நிறுவவும்"
#: Base.java:233
msgid ""
"Arduino requires a full JDK (not just a JRE)\n"
"to run. Please install JDK 1.5 or later.\n"
"More information can be found in the reference."
-msgstr ""
-"Arduinoவிற்கு முழு JDK தேவை (JRE மற்றும் கூடாது). \n"
-"JDK 1.5 (அ) புதியதை நிறுவவும்.\n"
-"மேலும் விவரங்களை குறிப்பில் காணலாம்."
+msgstr ""
+"Arduinoவிற்கு முழு JDK தேவை (JRE மற்றும் கூடாது). \n"
+"JDK 1.5 (அ) புதியதை நிறுவவும்.\n"
+"மேலும் விவரங்களை குறிப்பில் காணலாம்."
#: Base.java:257
msgid "Sketchbook folder disappeared"
-msgstr "வரைவுப்புத்தக உறை மறைந்துவிட்டது"
+msgstr "வரைவுப்புத்தக உறை மறைந்துவிட்டது"
#: Base.java:258
msgid ""
@@ -1181,64 +1181,64 @@ msgid ""
"location, and create a new sketchbook folder if\n"
"necessary. Arduino will then stop talking about\n"
"himself in the third person."
-msgstr ""
-"வரைவுறை இல்லை.\n"
-"Arduino இயல்பான வரைவுப்புத்தக இடத்திற்கு மாறியபின்,\n"
-"தேவைப்பட்டால் புதிய வரைவுப்புத்தக உறையை உருவாக்கும். \n"
-"Arduino தன்னைபற்றியே மூன்றாவது மனிதன் போல \n"
-"பேசுவதை நிறுத்திக்கொள்ளும்."
+msgstr ""
+"வரைவுறை இல்லை.\n"
+"Arduino இயல்பான வரைவுப்புத்தக இடத்திற்கு மாறியபின்,\n"
+"தேவைப்பட்டால் புதிய வரைவுப்புத்தக உறையை உருவாக்கும். \n"
+"Arduino தன்னைபற்றியே மூன்றாவது மனிதன் போல \n"
+"பேசுவதை நிறுத்திக்கொள்ளும்."
#: Base.java:532
msgid "Time for a Break"
-msgstr "இடைவேளைக்கான நேரம்"
+msgstr "இடைவேளைக்கான நேரம்"
#: Base.java:533
msgid ""
"You've reached the limit for auto naming of new sketches\n"
"for the day. How about going for a walk instead?"
-msgstr ""
-"நீங்கள் புதிய வரைவுகளை தானாக பெயரிடும் இன்றைய உச்சவரம்பை எட்டிவிட்டீர்கள்.\n"
-" சிறிது நடைபயிற்சி மேற்கொள்ளலாமே!?"
+msgstr ""
+"நீங்கள் புதிய வரைவுகளை தானாக பெயரிடும் இன்றைய உச்சவரம்பை எட்டிவிட்டீர்கள்.\n"
+" சிறிது நடைபயிற்சி மேற்கொள்ளலாமே!?"
#: Base.java:537
msgid "Sunshine"
-msgstr "சூர்யோதயம்"
+msgstr "சூர்யோதயம்"
#: Base.java:538
msgid "No really, time for some fresh air for you."
-msgstr "இல்லை உண்மையாகவே, இது நீங்கள் புத்துணர்ச்சி பெறவேண்டிய நேரம்."
+msgstr "இல்லை உண்மையாகவே, இது நீங்கள் புத்துணர்ச்சி பெறவேண்டிய நேரம்."
#: Base.java:633
msgid "Open an Arduino sketch..."
-msgstr "ஒரு Arduino வரைவை திறக்கவும்..."
+msgstr "ஒரு Arduino வரைவை திறக்கவும்..."
#: Base.java:772
msgid ""
"
Are you "
"sure you want to Quit?
Closing the last open sketch will quit Arduino."
-msgstr ""
-"
நீங்கள் நிச்சயமாக "
-"வெளியேற விரும்புகிறீர்களா?
கடைசியாக திறந்த வரைவை மூடினால் Arduino அணைந்துவிடும்."
+msgstr ""
+"
நீங்கள் நிச்சயமாக "
+"வெளியேற விரும்புகிறீர்களா?
கடைசியாக திறந்த வரைவை மூடினால் Arduino அணைந்துவிடும்."
#: Base.java:970
msgid "Contributed"
-msgstr "பங்களிப்பு"
+msgstr "பங்களிப்பு"
#: Base.java:1095
msgid "Sketch Does Not Exist"
-msgstr "வரைவு இல்லை"
+msgstr "வரைவு இல்லை"
#: Base.java:1096
msgid ""
"The selected sketch no longer exists.\n"
"You may need to restart Arduino to update\n"
"the sketchbook menu."
-msgstr ""
-"தேர்ந்தெடுக்கப்பட்ட வரைவு இல்லை.\n"
-"வரைவுப்புத்தக பட்டியலை புதுப்பிக்க Arduinoவை \n"
-"மறுதுவக்கம் செய்யவும்."
+msgstr ""
+"தேர்ந்தெடுக்கப்பட்ட வரைவு இல்லை.\n"
+"வரைவுப்புத்தக பட்டியலை புதுப்பிக்க Arduinoவை \n"
+"மறுதுவக்கம் செய்யவும்."
#: Base.java:1125
#, java-format
@@ -1248,15 +1248,15 @@ msgid ""
"(ASCII-only with no spaces, and it cannot start with a number).\n"
"To get rid of this message, remove the sketch from\n"
"{1}"
-msgstr ""
-"\"{0}\" வரைவை பயன்படுத்த முடியாது.\n"
-"வரைவுப்பெயர்களில் அடிப்படை எழுத்துக்கள் மற்றும் எண்கள் மட்டுமே இருக்க வேண்டும்\n"
-"(இடைவெளி இல்லாமல் ASCII மட்டும், இது எண்னில் ஆரம்பமாகக் கூடாது).\n"
-"இந்த செய்தியில் இருந்து விடிவு பெற, {1}ல் இருந்து வரைவை நீக்கு"
+msgstr ""
+"\"{0}\" வரைவை பயன்படுத்த முடியாது.\n"
+"வரைவுப்பெயர்களில் அடிப்படை எழுத்துக்கள் மற்றும் எண்கள் மட்டுமே இருக்க வேண்டும்\n"
+"(இடைவெளி இல்லாமல் ASCII மட்டும், இது எண்னில் ஆரம்பமாகக் கூடாது).\n"
+"இந்த செய்தியில் இருந்து விடிவு பெற, {1}ல் இருந்து வரைவை நீக்கு"
#: Base.java:1132
msgid "Ignoring sketch with bad name"
-msgstr "தவறான பெயர் கொண்ட வரைவை அளச்சியப்படுத்துகிறது"
+msgstr "தவறான பெயர் கொண்ட வரைவை அளச்சியப்படுத்துகிறது"
#: Base.java:1202
#, java-format
@@ -1264,193 +1264,193 @@ msgid ""
"The library \"{0}\" cannot be used.\n"
"Library names must contain only basic letters and numbers.\n"
"(ASCII only and no spaces, and it cannot start with a number)"
-msgstr ""
-"\"{0}\" நூலகத்தை பயன்படுத்த முடியவில்லை.\n"
-"நூலக பெயர்களில் அடிப்படை எழுத்துக்கள் மற்றும் எண்கள் மட்டுமே இருக்க வேண்டும்.\n"
-"(இடைவெளி இல்லாமல் ASCII மட்டும், இது எண்னில் ஆரம்பமாகக் கூடாது)"
+msgstr ""
+"\"{0}\" நூலகத்தை பயன்படுத்த முடியவில்லை.\n"
+"நூலக பெயர்களில் அடிப்படை எழுத்துக்கள் மற்றும் எண்கள் மட்டுமே இருக்க வேண்டும்.\n"
+"(இடைவெளி இல்லாமல் ASCII மட்டும், இது எண்னில் ஆரம்பமாகக் கூடாது)"
#: Base.java:1207
msgid "Ignoring bad library name"
-msgstr "தவறான நூலகப்பெயரை அலட்சியப்படுத்துகிறது"
+msgstr "தவறான நூலகப்பெயரை அலட்சியப்படுத்துகிறது"
#: Base.java:1432
msgid "Problem getting data folder"
-msgstr "தரவு கோப்புறையை பெறுவதில் பிரச்சினை"
+msgstr "தரவு கோப்புறையை பெறுவதில் பிரச்சினை"
#: Base.java:1433
msgid "Error getting the Arduino data folder."
-msgstr "Arduino தரவு கோப்புறையை பெறுவதில் பிழை."
+msgstr "Arduino தரவு கோப்புறையை பெறுவதில் பிழை."
#: Base.java:1440
msgid "Settings issues"
-msgstr "அமைப்பு சிக்கல்கள்"
+msgstr "அமைப்பு சிக்கல்கள்"
#: Base.java:1441
msgid ""
"Arduino cannot run because it could not\n"
"create a folder to store your settings."
-msgstr ""
-"Arduino இயங்க முடியவில்லை, ஏனென்றால் உங்கள் \n"
-"அமைப்புகளை சேமிக்க ஒரு உறையை உருவாக்க முடியவில்லை."
+msgstr ""
+"Arduino இயங்க முடியவில்லை, ஏனென்றால் உங்கள் \n"
+"அமைப்புகளை சேமிக்க ஒரு உறையை உருவாக்க முடியவில்லை."
#: Base.java:1602
msgid "You forgot your sketchbook"
-msgstr "நீங்கள் உங்கள் வரைவுப்புத்தகத்தை மறந்துவிட்டீர்கள்"
+msgstr "நீங்கள் உங்கள் வரைவுப்புத்தகத்தை மறந்துவிட்டீர்கள்"
#: Base.java:1603
msgid ""
"Arduino cannot run because it could not\n"
"create a folder to store your sketchbook."
-msgstr ""
-"Arduino இயங்கமுடியவில்லை ஏனென்றால்,\n"
-"வரைவுப்புத்தகத்தை சேமிக்க உறையை உருவாக்கமுடியவில்லை."
+msgstr ""
+"Arduino இயங்கமுடியவில்லை ஏனென்றால்,\n"
+"வரைவுப்புத்தகத்தை சேமிக்க உறையை உருவாக்கமுடியவில்லை."
#: Base.java:1623
msgid "Select (or create new) folder for sketches..."
-msgstr "வரைவுகளுக்கு உறையை தேர்வு செய்யவும் (அல்லது உருவாக்கவும்)..."
+msgstr "வரைவுகளுக்கு உறையை தேர்வு செய்யவும் (அல்லது உருவாக்கவும்)..."
#: Base.java:1647
msgid "Problem Opening URL"
-msgstr "URLஐ திறப்பதில் பிரச்சனை எழுந்துள்ளது"
+msgstr "URLஐ திறப்பதில் பிரச்சனை எழுந்துள்ளது"
#: Base.java:1648
#, java-format
msgid ""
"Could not open the URL\n"
"{0}"
-msgstr ""
-"URLஐ திறக்க முடியவில்லை\n"
-"{0}"
+msgstr ""
+"URLஐ திறக்க முடியவில்லை\n"
+"{0}"
#: Base.java:1671
msgid "Problem Opening Folder"
-msgstr "கோப்புறையை திறப்பதில் பிரச்சனை எழுந்துள்ளது"
+msgstr "கோப்புறையை திறப்பதில் பிரச்சனை எழுந்துள்ளது"
#: Base.java:1672
#, java-format
msgid ""
"Could not open the folder\n"
"{0}"
-msgstr ""
-"கோப்புறையை திறக்க முடியவில்லை\n"
-"{0}"
+msgstr ""
+"கோப்புறையை திறக்க முடியவில்லை\n"
+"{0}"
#: Base.java:1785
msgid "Guide_MacOSX.html"
-msgstr "Guide_MacOSX.html"
+msgstr "Guide_MacOSX.html"
#: Base.java:1787
msgid "Guide_Windows.html"
-msgstr "Guide_Windows.html"
+msgstr "Guide_Windows.html"
#: Base.java:1789
msgid "http://www.arduino.cc/playground/Learning/Linux"
-msgstr "http://www.arduino.cc/playground/Learning/Linux"
+msgstr "http://www.arduino.cc/playground/Learning/Linux"
#: Base.java:1794
msgid "index.html"
-msgstr "index.html"
+msgstr "index.html"
#: Base.java:1799
msgid "Guide_Environment.html"
-msgstr "Guide_Environment.html"
+msgstr "Guide_Environment.html"
#: Base.java:1804
msgid "environment"
-msgstr "சுற்றுச்சூழல்"
+msgstr "சுற்றுச்சூழல்"
#: Base.java:1804
msgid "platforms.html"
-msgstr "platforms.html"
+msgstr "platforms.html"
#: Base.java:1809
msgid "Guide_Troubleshooting.html"
-msgstr "Guide_Troubleshooting.html"
+msgstr "Guide_Troubleshooting.html"
#: Base.java:1814
msgid "FAQ.html"
-msgstr "FAQ.html"
+msgstr "FAQ.html"
#: Base.java:1826
msgid "Message"
-msgstr "தகவல்"
+msgstr "தகவல்"
#: Base.java:1842
msgid "Warning"
-msgstr "எச்சரிக்கை"
+msgstr "எச்சரிக்கை"
#: Base.java:2196
#, java-format
msgid "Could not remove old version of {0}"
-msgstr "{0}வின் பழைய பதிப்பை அகற்ற முடியவில்லை"
+msgstr "{0}வின் பழைய பதிப்பை அகற்ற முடியவில்லை"
#: Base.java:2206
#, java-format
msgid "Could not replace {0}"
-msgstr "{0}வை மாற்ற முடியவில்லை"
+msgstr "{0}வை மாற்ற முடியவில்லை"
#: Base.java:2247 Base.java:2270
#, java-format
msgid "Could not delete {0}"
-msgstr "{0}ஐ நீக்க முடியவில்லை"
+msgstr "{0}ஐ நீக்க முடியவில்லை"
#: EditorHeader.java:292
msgid "New Tab"
-msgstr "புதிய தாவல்"
+msgstr "புதிய தாவல்"
#: EditorHeader.java:300
msgid "Rename"
-msgstr "மருபெயரிடுக"
+msgstr "மருபெயரிடுக"
#: EditorHeader.java:326
msgid "Previous Tab"
-msgstr "முந்தைய தாவல்"
+msgstr "முந்தைய தாவல்"
#: EditorHeader.java:340
msgid "Next Tab"
-msgstr "அடுத்த தாவல்"
+msgstr "அடுத்த தாவல்"
#: EditorToolbar.java:41 EditorToolbar.java:46
msgid "Verify"
-msgstr "சரிபார்க்க"
+msgstr "சரிபார்க்க"
#: EditorToolbar.java:41
msgid "Open"
-msgstr "திற"
+msgstr "திற"
#: EditorToolbar.java:46
msgid "New Editor Window"
-msgstr "புதிய திருத்தி சாளரம்"
+msgstr "புதிய திருத்தி சாளரம்"
#: EditorToolbar.java:46
msgid "Open in Another Window"
-msgstr "மற்றொரு சாளரத்தில் திற"
+msgstr "மற்றொரு சாளரத்தில் திற"
#: Platform.java:167
msgid "No launcher available"
-msgstr "எந்த ஏவுதிரையும் கிட்டவில்லை"
+msgstr "எந்த ஏவுதிரையும் கிட்டவில்லை"
#: Platform.java:168
msgid ""
"Unspecified platform, no launcher available.\n"
"To enable opening URLs or folders, add a \n"
"\"launcher=/path/to/app\" line to preferences.txt"
-msgstr ""
-"குறிப்பிடப்படாத இயங்குதளம், எந்த எவுதிரையும் இல்லை.\n"
-"URL (அ) உரைகளை திறக்க, \n"
-"\"launcher=/path/to/app\" என்ற வரியை preferences.txtல் சேர்க்கவும்"
+msgstr ""
+"குறிப்பிடப்படாத இயங்குதளம், எந்த எவுதிரையும் இல்லை.\n"
+"URL (அ) உரைகளை திறக்க, \n"
+"\"launcher=/path/to/app\" என்ற வரியை preferences.txtல் சேர்க்கவும்"
#: Theme.java:52
msgid ""
"Could not read color theme settings.\n"
"You'll need to reinstall Processing."
-msgstr ""
-"வண்ண கரு அமைப்புகளை படிக்க முடியவில்லை.\n"
-"நீங்கள் செயல்முறையை மீண்டும் நிறுவ வேண்டும்."
+msgstr ""
+"வண்ண கரு அமைப்புகளை படிக்க முடியவில்லை.\n"
+"நீங்கள் செயல்முறையை மீண்டும் நிறுவ வேண்டும்."
#: Preferences.java:80
msgid "Browse"
-msgstr "உலவு"
+msgstr "உலவு"
#: Preferences.java:83
msgid "System Default"
@@ -1466,11 +1466,11 @@ msgstr ""
#: Preferences.java:86
msgid "Catalan"
-msgstr "கடாலன்"
+msgstr "கடாலன்"
#: Preferences.java:87
msgid "Chinese Simplified"
-msgstr "இலகு நடை சீனம் "
+msgstr "இலகு நடை சீனம் "
#: Preferences.java:88
msgid "Chinese Traditional"
@@ -1478,15 +1478,15 @@ msgstr ""
#: Preferences.java:89
msgid "Danish"
-msgstr "டானியம்"
+msgstr "டானியம்"
#: Preferences.java:90
msgid "Dutch"
-msgstr "உலாந்தியம்"
+msgstr "உலாந்தியம்"
#: Preferences.java:91
msgid "English"
-msgstr "ஆங்கிலம்"
+msgstr "ஆங்கிலம்"
#: Preferences.java:92
msgid "Estonian"
@@ -1494,27 +1494,27 @@ msgstr ""
#: Preferences.java:93
msgid "French"
-msgstr "பிரஞ்சு"
+msgstr "பிரஞ்சு"
#: Preferences.java:94
msgid "Filipino"
-msgstr "ஃபிலிபினோ"
+msgstr "ஃபிலிபினோ"
#: Preferences.java:95
msgid "Galician"
-msgstr "காலிசியன்"
+msgstr "காலிசியன்"
#: Preferences.java:96
msgid "German"
-msgstr "ஜெர்மானியம்"
+msgstr "ஜெர்மானியம்"
#: Preferences.java:97
msgid "Greek"
-msgstr "கிரேக்கம்"
+msgstr "கிரேக்கம்"
#: Preferences.java:98
msgid "Hungarian"
-msgstr "ஹங்கேரியன்"
+msgstr "ஹங்கேரியன்"
#: Preferences.java:99
msgid "Indonesian"
@@ -1522,11 +1522,11 @@ msgstr ""
#: Preferences.java:100
msgid "Italian"
-msgstr "இத்தாலியன்"
+msgstr "இத்தாலியன்"
#: Preferences.java:101
msgid "Japanese"
-msgstr "ஜப்பனீஸ்"
+msgstr "ஜப்பனீஸ்"
#: Preferences.java:102
msgid "Korean"
@@ -1534,7 +1534,7 @@ msgstr ""
#: Preferences.java:103
msgid "Latvian"
-msgstr "லேட்வியன்"
+msgstr "லேட்வியன்"
#: Preferences.java:104
msgid "Lithuaninan"
@@ -1542,7 +1542,7 @@ msgstr ""
#: Preferences.java:105
msgid "Persian"
-msgstr "பர்ஸியன்"
+msgstr "பர்ஸியன்"
#: Preferences.java:106
msgid "Polish"
@@ -1554,7 +1554,7 @@ msgstr ""
#: Preferences.java:109
msgid "Romanian"
-msgstr "ரோமானியம்"
+msgstr "ரோமானியம்"
#: Preferences.java:110
msgid "Russian"
@@ -1562,41 +1562,41 @@ msgstr ""
#: Preferences.java:111
msgid "Spanish"
-msgstr "ஸ்பானியம்"
+msgstr "ஸ்பானியம்"
#: Preferences.java:210
msgid ""
"Could not read default settings.\n"
"You'll need to reinstall Arduino."
-msgstr ""
-"இயல்புநிலை அமைப்புகளை படிக்க முடியவில்லை.\n"
-"நீங்கள் Arduinoவை மீண்டும் நிறுவ வேண்டும்."
+msgstr ""
+"இயல்புநிலை அமைப்புகளை படிக்க முடியவில்லை.\n"
+"நீங்கள் Arduinoவை மீண்டும் நிறுவ வேண்டும்."
#: Preferences.java:242
#, java-format
msgid "Could not read preferences from {0}"
-msgstr "{0}ல் இருந்து விருப்பங்களை படிக்க முடியவில்லை"
+msgstr "{0}ல் இருந்து விருப்பங்களை படிக்க முடியவில்லை"
#: Preferences.java:261
msgid "Error reading preferences"
-msgstr "விருப்பங்களை படிப்பதில் பிழை"
+msgstr "விருப்பங்களை படிப்பதில் பிழை"
#: Preferences.java:263
#, java-format
msgid ""
"Error reading the preferences file. Please delete (or move)\n"
"{0} and restart Arduino."
-msgstr ""
-"விருப்பக் கோப்பை படிப்பதில் பிழை. தயவு செய்து {0}வை அகற்றவும்((அ) நகற்றவும்)\n"
-"பின்பு Arduinoவை மறுதொடக்கம் செய்யவும்."
+msgstr ""
+"விருப்பக் கோப்பை படிப்பதில் பிழை. தயவு செய்து {0}வை அகற்றவும்((அ) நகற்றவும்)\n"
+"பின்பு Arduinoவை மறுதொடக்கம் செய்யவும்."
#: Preferences.java:299
msgid "Sketchbook location:"
-msgstr "வரைவுப்புத்தக இடம்:"
+msgstr "வரைவுப்புத்தக இடம்:"
#: Preferences.java:314
msgid "Select new sketchbook location"
-msgstr "புதிய வரைவுப்புத்தக இடத்தை தேர்வு செய்யவும்"
+msgstr "புதிய வரைவுப்புத்தக இடத்தை தேர்வு செய்யவும்"
#: Preferences.java:337
msgid "Editor language: "
@@ -1604,53 +1604,53 @@ msgstr ""
#: Preferences.java:342 Preferences.java:358
msgid " (requires restart of Arduino)"
-msgstr " (Arduino மறுதுவக்கம் தேவைப்படுகிறது)"
+msgstr " (Arduino மறுதுவக்கம் தேவைப்படுகிறது)"
#: Preferences.java:354
msgid "Editor font size: "
-msgstr "திருத்தி எழுத்துரு அளவு: "
+msgstr "திருத்தி எழுத்துரு அளவு: "
#: Preferences.java:371
msgid "Show verbose output during: "
-msgstr "இதன் போது வேர்போசு வெளியீட்டை காண்பிக்கவும்:"
+msgstr "இதன் போது வேர்போசு வெளியீட்டை காண்பிக்கவும்:"
#: Preferences.java:373
msgid "compilation "
-msgstr "தொகுப்பு"
+msgstr "தொகுப்பு"
#: Preferences.java:375
msgid "upload"
-msgstr "பதிவேற்று"
+msgstr "பதிவேற்று"
#: Preferences.java:384
msgid "Verify code after upload"
-msgstr "பதிவேற்றியவுடன் குறியீட்டை சரிபார்க்கவும்"
+msgstr "பதிவேற்றியவுடன் குறியீட்டை சரிபார்க்கவும்"
#: Preferences.java:393
msgid "Use external editor"
-msgstr "புற திருத்தியை பயன்படுத்துக"
+msgstr "புற திருத்தியை பயன்படுத்துக"
#: Preferences.java:403
msgid "Check for updates on startup"
-msgstr "துவக்கும் போது புதுப்பிப்புகள் உள்ளதா என பார்"
+msgstr "துவக்கும் போது புதுப்பிப்புகள் உள்ளதா என பார்"
#: Preferences.java:412
msgid "Update sketch files to new extension on save (.pde -> .ino)"
-msgstr "சேமிக்கும் பொது வரைவு கோப்புகளை புதிய நீட்டிப்புகளுக்கு புதுப்பிக்கவும் (.pde -> .ino)"
+msgstr "சேமிக்கும் பொது வரைவு கோப்புகளை புதிய நீட்டிப்புகளுக்கு புதுப்பிக்கவும் (.pde -> .ino)"
#: Preferences.java:423
msgid "Automatically associate .ino files with Arduino"
-msgstr "தானாகவே .ino கோப்புகளை Arduinoவுடன் தொடர்பு படுத்தவும்"
+msgstr "தானாகவே .ino கோப்புகளை Arduinoவுடன் தொடர்பு படுத்தவும்"
#: Preferences.java:433
msgid "More preferences can be edited directly in the file"
-msgstr "மேலும் விருப்பத்தேர்வுகளை நேரடியாக கோப்பில் திருத்தலாம்"
+msgstr "மேலும் விருப்பத்தேர்வுகளை நேரடியாக கோப்பில் திருத்தலாம்"
#: Preferences.java:462
msgid "(edit only when Arduino is not running)"
-msgstr "(Arduino செயல்படாதபோது மாற்றம் மட்டுமே முடியும்)"
+msgstr "(Arduino செயல்படாதபோது மாற்றம் மட்டுமே முடியும்)"
#: Preferences.java:609
#, java-format
msgid "ignoring invalid font size {0}"
-msgstr "தவறான எழுத்துரு அளவை {0} அளச்சியப்படுத்துகிறது"
+msgstr "தவறான எழுத்துரு அளவை {0} அளச்சியப்படுத்துகிறது"
diff --git a/app/src/processing/app/i18n/Resources_ta.properties b/app/src/processing/app/i18n/Resources_ta.properties
index 380f6ccc718..ceb762e52cc 100644
--- a/app/src/processing/app/i18n/Resources_ta.properties
+++ b/app/src/processing/app/i18n/Resources_ta.properties
@@ -1,8 +1,8 @@
-# Tamil translations for Arduino IDE package.
-# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the Arduino IDE package.
-# Ram Kumar.Y , 2012.
-#
+# Tamil translations for Arduino IDE package.
+# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the Arduino IDE package.
+# Ram Kumar.Y , 2012.
+#
!=Project-Id-Version\: PACKAGE VERSION\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2012-05-04 10\:24-0400\nLast-Translator\: Ram Kumar.Y \nLanguage-Team\: Tamil\nLanguage\: ta\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\n
#: Editor.java:366
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/__init__.py b/app/src/processing/app/i18n/python/requests/packages/charade/__init__.py
index 5d580b3da47..26378d45325 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/__init__.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/__init__.py
@@ -1,27 +1,27 @@
-######################## BEGIN LICENSE BLOCK ########################
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-__version__ = "1.0.1"
-
-
-def detect(aBuf):
- from . import universaldetector
- u = universaldetector.UniversalDetector()
- u.reset()
- u.feed(aBuf)
- u.close()
- return u.result
+######################## BEGIN LICENSE BLOCK ########################
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+__version__ = "1.0.1"
+
+
+def detect(aBuf):
+ from . import universaldetector
+ u = universaldetector.UniversalDetector()
+ u.reset()
+ u.feed(aBuf)
+ u.close()
+ return u.result
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/big5prober.py b/app/src/processing/app/i18n/python/requests/packages/charade/big5prober.py
index 7382f7c5d49..becce81e5e8 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/big5prober.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/big5prober.py
@@ -1,42 +1,42 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is Mozilla Communicator client code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 1998
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-from .mbcharsetprober import MultiByteCharSetProber
-from .codingstatemachine import CodingStateMachine
-from .chardistribution import Big5DistributionAnalysis
-from .mbcssm import Big5SMModel
-
-
-class Big5Prober(MultiByteCharSetProber):
- def __init__(self):
- MultiByteCharSetProber.__init__(self)
- self._mCodingSM = CodingStateMachine(Big5SMModel)
- self._mDistributionAnalyzer = Big5DistributionAnalysis()
- self.reset()
-
- def get_charset_name(self):
- return "Big5"
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is Mozilla Communicator client code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+from .mbcharsetprober import MultiByteCharSetProber
+from .codingstatemachine import CodingStateMachine
+from .chardistribution import Big5DistributionAnalysis
+from .mbcssm import Big5SMModel
+
+
+class Big5Prober(MultiByteCharSetProber):
+ def __init__(self):
+ MultiByteCharSetProber.__init__(self)
+ self._mCodingSM = CodingStateMachine(Big5SMModel)
+ self._mDistributionAnalyzer = Big5DistributionAnalysis()
+ self.reset()
+
+ def get_charset_name(self):
+ return "Big5"
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/chardistribution.py b/app/src/processing/app/i18n/python/requests/packages/charade/chardistribution.py
index 981bd1a5333..253408f287a 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/chardistribution.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/chardistribution.py
@@ -1,230 +1,230 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is Mozilla Communicator client code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 1998
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-from .euctwfreq import (EUCTWCharToFreqOrder, EUCTW_TABLE_SIZE,
- EUCTW_TYPICAL_DISTRIBUTION_RATIO)
-from .euckrfreq import (EUCKRCharToFreqOrder, EUCKR_TABLE_SIZE,
- EUCKR_TYPICAL_DISTRIBUTION_RATIO)
-from .gb2312freq import (GB2312CharToFreqOrder, GB2312_TABLE_SIZE,
- GB2312_TYPICAL_DISTRIBUTION_RATIO)
-from .big5freq import (Big5CharToFreqOrder, BIG5_TABLE_SIZE,
- BIG5_TYPICAL_DISTRIBUTION_RATIO)
-from .jisfreq import (JISCharToFreqOrder, JIS_TABLE_SIZE,
- JIS_TYPICAL_DISTRIBUTION_RATIO)
-from .compat import wrap_ord
-
-ENOUGH_DATA_THRESHOLD = 1024
-SURE_YES = 0.99
-SURE_NO = 0.01
-
-
-class CharDistributionAnalysis:
- def __init__(self):
- # Mapping table to get frequency order from char order (get from
- # GetOrder())
- self._mCharToFreqOrder = None
- self._mTableSize = None # Size of above table
- # This is a constant value which varies from language to language,
- # used in calculating confidence. See
- # http://www.mozilla.org/projects/intl/UniversalCharsetDetection.html
- # for further detail.
- self._mTypicalDistributionRatio = None
- self.reset()
-
- def reset(self):
- """reset analyser, clear any state"""
- # If this flag is set to True, detection is done and conclusion has
- # been made
- self._mDone = False
- self._mTotalChars = 0 # Total characters encountered
- # The number of characters whose frequency order is less than 512
- self._mFreqChars = 0
-
- def feed(self, aBuf, aCharLen):
- """feed a character with known length"""
- if aCharLen == 2:
- # we only care about 2-bytes character in our distribution analysis
- order = self.get_order(aBuf)
- else:
- order = -1
- if order >= 0:
- self._mTotalChars += 1
- # order is valid
- if order < self._mTableSize:
- if 512 > self._mCharToFreqOrder[order]:
- self._mFreqChars += 1
-
- def get_confidence(self):
- """return confidence based on existing data"""
- # if we didn't receive any character in our consideration range,
- # return negative answer
- if self._mTotalChars <= 0:
- return SURE_NO
-
- if self._mTotalChars != self._mFreqChars:
- r = (self._mFreqChars / ((self._mTotalChars - self._mFreqChars)
- * self._mTypicalDistributionRatio))
- if r < SURE_YES:
- return r
-
- # normalize confidence (we don't want to be 100% sure)
- return SURE_YES
-
- def got_enough_data(self):
- # It is not necessary to receive all data to draw conclusion.
- # For charset detection, certain amount of data is enough
- return self._mTotalChars > ENOUGH_DATA_THRESHOLD
-
- def get_order(self, aBuf):
- # We do not handle characters based on the original encoding string,
- # but convert this encoding string to a number, here called order.
- # This allows multiple encodings of a language to share one frequency
- # table.
- return -1
-
-
-class EUCTWDistributionAnalysis(CharDistributionAnalysis):
- def __init__(self):
- CharDistributionAnalysis.__init__(self)
- self._mCharToFreqOrder = EUCTWCharToFreqOrder
- self._mTableSize = EUCTW_TABLE_SIZE
- self._mTypicalDistributionRatio = EUCTW_TYPICAL_DISTRIBUTION_RATIO
-
- def get_order(self, aBuf):
- # for euc-TW encoding, we are interested
- # first byte range: 0xc4 -- 0xfe
- # second byte range: 0xa1 -- 0xfe
- # no validation needed here. State machine has done that
- first_char = wrap_ord(aBuf[0])
- if first_char >= 0xC4:
- return 94 * (first_char - 0xC4) + wrap_ord(aBuf[1]) - 0xA1
- else:
- return -1
-
-
-class EUCKRDistributionAnalysis(CharDistributionAnalysis):
- def __init__(self):
- CharDistributionAnalysis.__init__(self)
- self._mCharToFreqOrder = EUCKRCharToFreqOrder
- self._mTableSize = EUCKR_TABLE_SIZE
- self._mTypicalDistributionRatio = EUCKR_TYPICAL_DISTRIBUTION_RATIO
-
- def get_order(self, aBuf):
- # for euc-KR encoding, we are interested
- # first byte range: 0xb0 -- 0xfe
- # second byte range: 0xa1 -- 0xfe
- # no validation needed here. State machine has done that
- first_char = wrap_ord(aBuf[0])
- if first_char >= 0xB0:
- return 94 * (first_char - 0xB0) + wrap_ord(aBuf[1]) - 0xA1
- else:
- return -1
-
-
-class GB2312DistributionAnalysis(CharDistributionAnalysis):
- def __init__(self):
- CharDistributionAnalysis.__init__(self)
- self._mCharToFreqOrder = GB2312CharToFreqOrder
- self._mTableSize = GB2312_TABLE_SIZE
- self._mTypicalDistributionRatio = GB2312_TYPICAL_DISTRIBUTION_RATIO
-
- def get_order(self, aBuf):
- # for GB2312 encoding, we are interested
- # first byte range: 0xb0 -- 0xfe
- # second byte range: 0xa1 -- 0xfe
- # no validation needed here. State machine has done that
- first_char, second_char = wrap_ord(aBuf[0]), wrap_ord(aBuf[1])
- if (first_char >= 0xB0) and (second_char >= 0xA1):
- return 94 * (first_char - 0xB0) + second_char - 0xA1
- else:
- return -1
-
-
-class Big5DistributionAnalysis(CharDistributionAnalysis):
- def __init__(self):
- CharDistributionAnalysis.__init__(self)
- self._mCharToFreqOrder = Big5CharToFreqOrder
- self._mTableSize = BIG5_TABLE_SIZE
- self._mTypicalDistributionRatio = BIG5_TYPICAL_DISTRIBUTION_RATIO
-
- def get_order(self, aBuf):
- # for big5 encoding, we are interested
- # first byte range: 0xa4 -- 0xfe
- # second byte range: 0x40 -- 0x7e , 0xa1 -- 0xfe
- # no validation needed here. State machine has done that
- first_char, second_char = wrap_ord(aBuf[0]), wrap_ord(aBuf[1])
- if first_char >= 0xA4:
- if second_char >= 0xA1:
- return 157 * (first_char - 0xA4) + second_char - 0xA1 + 63
- else:
- return 157 * (first_char - 0xA4) + second_char - 0x40
- else:
- return -1
-
-
-class SJISDistributionAnalysis(CharDistributionAnalysis):
- def __init__(self):
- CharDistributionAnalysis.__init__(self)
- self._mCharToFreqOrder = JISCharToFreqOrder
- self._mTableSize = JIS_TABLE_SIZE
- self._mTypicalDistributionRatio = JIS_TYPICAL_DISTRIBUTION_RATIO
-
- def get_order(self, aBuf):
- # for sjis encoding, we are interested
- # first byte range: 0x81 -- 0x9f , 0xe0 -- 0xfe
- # second byte range: 0x40 -- 0x7e, 0x81 -- oxfe
- # no validation needed here. State machine has done that
- first_char, second_char = wrap_ord(aBuf[0]), wrap_ord(aBuf[1])
- if (first_char >= 0x81) and (first_char <= 0x9F):
- order = 188 * (first_char - 0x81)
- elif (first_char >= 0xE0) and (first_char <= 0xEF):
- order = 188 * (first_char - 0xE0 + 31)
- else:
- return -1
- order = order + second_char - 0x40
- if second_char > 0x7F:
- order = -1
- return order
-
-
-class EUCJPDistributionAnalysis(CharDistributionAnalysis):
- def __init__(self):
- CharDistributionAnalysis.__init__(self)
- self._mCharToFreqOrder = JISCharToFreqOrder
- self._mTableSize = JIS_TABLE_SIZE
- self._mTypicalDistributionRatio = JIS_TYPICAL_DISTRIBUTION_RATIO
-
- def get_order(self, aBuf):
- # for euc-JP encoding, we are interested
- # first byte range: 0xa0 -- 0xfe
- # second byte range: 0xa1 -- 0xfe
- # no validation needed here. State machine has done that
- char = wrap_ord(aBuf[0])
- if char >= 0xA0:
- return 94 * (char - 0xA1) + wrap_ord(aBuf[1]) - 0xa1
- else:
- return -1
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is Mozilla Communicator client code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+from .euctwfreq import (EUCTWCharToFreqOrder, EUCTW_TABLE_SIZE,
+ EUCTW_TYPICAL_DISTRIBUTION_RATIO)
+from .euckrfreq import (EUCKRCharToFreqOrder, EUCKR_TABLE_SIZE,
+ EUCKR_TYPICAL_DISTRIBUTION_RATIO)
+from .gb2312freq import (GB2312CharToFreqOrder, GB2312_TABLE_SIZE,
+ GB2312_TYPICAL_DISTRIBUTION_RATIO)
+from .big5freq import (Big5CharToFreqOrder, BIG5_TABLE_SIZE,
+ BIG5_TYPICAL_DISTRIBUTION_RATIO)
+from .jisfreq import (JISCharToFreqOrder, JIS_TABLE_SIZE,
+ JIS_TYPICAL_DISTRIBUTION_RATIO)
+from .compat import wrap_ord
+
+ENOUGH_DATA_THRESHOLD = 1024
+SURE_YES = 0.99
+SURE_NO = 0.01
+
+
+class CharDistributionAnalysis:
+ def __init__(self):
+ # Mapping table to get frequency order from char order (get from
+ # GetOrder())
+ self._mCharToFreqOrder = None
+ self._mTableSize = None # Size of above table
+ # This is a constant value which varies from language to language,
+ # used in calculating confidence. See
+ # http://www.mozilla.org/projects/intl/UniversalCharsetDetection.html
+ # for further detail.
+ self._mTypicalDistributionRatio = None
+ self.reset()
+
+ def reset(self):
+ """reset analyser, clear any state"""
+ # If this flag is set to True, detection is done and conclusion has
+ # been made
+ self._mDone = False
+ self._mTotalChars = 0 # Total characters encountered
+ # The number of characters whose frequency order is less than 512
+ self._mFreqChars = 0
+
+ def feed(self, aBuf, aCharLen):
+ """feed a character with known length"""
+ if aCharLen == 2:
+ # we only care about 2-bytes character in our distribution analysis
+ order = self.get_order(aBuf)
+ else:
+ order = -1
+ if order >= 0:
+ self._mTotalChars += 1
+ # order is valid
+ if order < self._mTableSize:
+ if 512 > self._mCharToFreqOrder[order]:
+ self._mFreqChars += 1
+
+ def get_confidence(self):
+ """return confidence based on existing data"""
+ # if we didn't receive any character in our consideration range,
+ # return negative answer
+ if self._mTotalChars <= 0:
+ return SURE_NO
+
+ if self._mTotalChars != self._mFreqChars:
+ r = (self._mFreqChars / ((self._mTotalChars - self._mFreqChars)
+ * self._mTypicalDistributionRatio))
+ if r < SURE_YES:
+ return r
+
+ # normalize confidence (we don't want to be 100% sure)
+ return SURE_YES
+
+ def got_enough_data(self):
+ # It is not necessary to receive all data to draw conclusion.
+ # For charset detection, certain amount of data is enough
+ return self._mTotalChars > ENOUGH_DATA_THRESHOLD
+
+ def get_order(self, aBuf):
+ # We do not handle characters based on the original encoding string,
+ # but convert this encoding string to a number, here called order.
+ # This allows multiple encodings of a language to share one frequency
+ # table.
+ return -1
+
+
+class EUCTWDistributionAnalysis(CharDistributionAnalysis):
+ def __init__(self):
+ CharDistributionAnalysis.__init__(self)
+ self._mCharToFreqOrder = EUCTWCharToFreqOrder
+ self._mTableSize = EUCTW_TABLE_SIZE
+ self._mTypicalDistributionRatio = EUCTW_TYPICAL_DISTRIBUTION_RATIO
+
+ def get_order(self, aBuf):
+ # for euc-TW encoding, we are interested
+ # first byte range: 0xc4 -- 0xfe
+ # second byte range: 0xa1 -- 0xfe
+ # no validation needed here. State machine has done that
+ first_char = wrap_ord(aBuf[0])
+ if first_char >= 0xC4:
+ return 94 * (first_char - 0xC4) + wrap_ord(aBuf[1]) - 0xA1
+ else:
+ return -1
+
+
+class EUCKRDistributionAnalysis(CharDistributionAnalysis):
+ def __init__(self):
+ CharDistributionAnalysis.__init__(self)
+ self._mCharToFreqOrder = EUCKRCharToFreqOrder
+ self._mTableSize = EUCKR_TABLE_SIZE
+ self._mTypicalDistributionRatio = EUCKR_TYPICAL_DISTRIBUTION_RATIO
+
+ def get_order(self, aBuf):
+ # for euc-KR encoding, we are interested
+ # first byte range: 0xb0 -- 0xfe
+ # second byte range: 0xa1 -- 0xfe
+ # no validation needed here. State machine has done that
+ first_char = wrap_ord(aBuf[0])
+ if first_char >= 0xB0:
+ return 94 * (first_char - 0xB0) + wrap_ord(aBuf[1]) - 0xA1
+ else:
+ return -1
+
+
+class GB2312DistributionAnalysis(CharDistributionAnalysis):
+ def __init__(self):
+ CharDistributionAnalysis.__init__(self)
+ self._mCharToFreqOrder = GB2312CharToFreqOrder
+ self._mTableSize = GB2312_TABLE_SIZE
+ self._mTypicalDistributionRatio = GB2312_TYPICAL_DISTRIBUTION_RATIO
+
+ def get_order(self, aBuf):
+ # for GB2312 encoding, we are interested
+ # first byte range: 0xb0 -- 0xfe
+ # second byte range: 0xa1 -- 0xfe
+ # no validation needed here. State machine has done that
+ first_char, second_char = wrap_ord(aBuf[0]), wrap_ord(aBuf[1])
+ if (first_char >= 0xB0) and (second_char >= 0xA1):
+ return 94 * (first_char - 0xB0) + second_char - 0xA1
+ else:
+ return -1
+
+
+class Big5DistributionAnalysis(CharDistributionAnalysis):
+ def __init__(self):
+ CharDistributionAnalysis.__init__(self)
+ self._mCharToFreqOrder = Big5CharToFreqOrder
+ self._mTableSize = BIG5_TABLE_SIZE
+ self._mTypicalDistributionRatio = BIG5_TYPICAL_DISTRIBUTION_RATIO
+
+ def get_order(self, aBuf):
+ # for big5 encoding, we are interested
+ # first byte range: 0xa4 -- 0xfe
+ # second byte range: 0x40 -- 0x7e , 0xa1 -- 0xfe
+ # no validation needed here. State machine has done that
+ first_char, second_char = wrap_ord(aBuf[0]), wrap_ord(aBuf[1])
+ if first_char >= 0xA4:
+ if second_char >= 0xA1:
+ return 157 * (first_char - 0xA4) + second_char - 0xA1 + 63
+ else:
+ return 157 * (first_char - 0xA4) + second_char - 0x40
+ else:
+ return -1
+
+
+class SJISDistributionAnalysis(CharDistributionAnalysis):
+ def __init__(self):
+ CharDistributionAnalysis.__init__(self)
+ self._mCharToFreqOrder = JISCharToFreqOrder
+ self._mTableSize = JIS_TABLE_SIZE
+ self._mTypicalDistributionRatio = JIS_TYPICAL_DISTRIBUTION_RATIO
+
+ def get_order(self, aBuf):
+ # for sjis encoding, we are interested
+ # first byte range: 0x81 -- 0x9f , 0xe0 -- 0xfe
+ # second byte range: 0x40 -- 0x7e, 0x81 -- oxfe
+ # no validation needed here. State machine has done that
+ first_char, second_char = wrap_ord(aBuf[0]), wrap_ord(aBuf[1])
+ if (first_char >= 0x81) and (first_char <= 0x9F):
+ order = 188 * (first_char - 0x81)
+ elif (first_char >= 0xE0) and (first_char <= 0xEF):
+ order = 188 * (first_char - 0xE0 + 31)
+ else:
+ return -1
+ order = order + second_char - 0x40
+ if second_char > 0x7F:
+ order = -1
+ return order
+
+
+class EUCJPDistributionAnalysis(CharDistributionAnalysis):
+ def __init__(self):
+ CharDistributionAnalysis.__init__(self)
+ self._mCharToFreqOrder = JISCharToFreqOrder
+ self._mTableSize = JIS_TABLE_SIZE
+ self._mTypicalDistributionRatio = JIS_TYPICAL_DISTRIBUTION_RATIO
+
+ def get_order(self, aBuf):
+ # for euc-JP encoding, we are interested
+ # first byte range: 0xa0 -- 0xfe
+ # second byte range: 0xa1 -- 0xfe
+ # no validation needed here. State machine has done that
+ char = wrap_ord(aBuf[0])
+ if char >= 0xA0:
+ return 94 * (char - 0xA1) + wrap_ord(aBuf[1]) - 0xa1
+ else:
+ return -1
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/charsetgroupprober.py b/app/src/processing/app/i18n/python/requests/packages/charade/charsetgroupprober.py
index 29596547489..85e7a1c67db 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/charsetgroupprober.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/charsetgroupprober.py
@@ -1,106 +1,106 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is Mozilla Communicator client code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 1998
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-from . import constants
-import sys
-from .charsetprober import CharSetProber
-
-
-class CharSetGroupProber(CharSetProber):
- def __init__(self):
- CharSetProber.__init__(self)
- self._mActiveNum = 0
- self._mProbers = []
- self._mBestGuessProber = None
-
- def reset(self):
- CharSetProber.reset(self)
- self._mActiveNum = 0
- for prober in self._mProbers:
- if prober:
- prober.reset()
- prober.active = True
- self._mActiveNum += 1
- self._mBestGuessProber = None
-
- def get_charset_name(self):
- if not self._mBestGuessProber:
- self.get_confidence()
- if not self._mBestGuessProber:
- return None
-# self._mBestGuessProber = self._mProbers[0]
- return self._mBestGuessProber.get_charset_name()
-
- def feed(self, aBuf):
- for prober in self._mProbers:
- if not prober:
- continue
- if not prober.active:
- continue
- st = prober.feed(aBuf)
- if not st:
- continue
- if st == constants.eFoundIt:
- self._mBestGuessProber = prober
- return self.get_state()
- elif st == constants.eNotMe:
- prober.active = False
- self._mActiveNum -= 1
- if self._mActiveNum <= 0:
- self._mState = constants.eNotMe
- return self.get_state()
- return self.get_state()
-
- def get_confidence(self):
- st = self.get_state()
- if st == constants.eFoundIt:
- return 0.99
- elif st == constants.eNotMe:
- return 0.01
- bestConf = 0.0
- self._mBestGuessProber = None
- for prober in self._mProbers:
- if not prober:
- continue
- if not prober.active:
- if constants._debug:
- sys.stderr.write(prober.get_charset_name()
- + ' not active\n')
- continue
- cf = prober.get_confidence()
- if constants._debug:
- sys.stderr.write('%s confidence = %s\n' %
- (prober.get_charset_name(), cf))
- if bestConf < cf:
- bestConf = cf
- self._mBestGuessProber = prober
- if not self._mBestGuessProber:
- return 0.0
- return bestConf
-# else:
-# self._mBestGuessProber = self._mProbers[0]
-# return self._mBestGuessProber.get_confidence()
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is Mozilla Communicator client code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+from . import constants
+import sys
+from .charsetprober import CharSetProber
+
+
+class CharSetGroupProber(CharSetProber):
+ def __init__(self):
+ CharSetProber.__init__(self)
+ self._mActiveNum = 0
+ self._mProbers = []
+ self._mBestGuessProber = None
+
+ def reset(self):
+ CharSetProber.reset(self)
+ self._mActiveNum = 0
+ for prober in self._mProbers:
+ if prober:
+ prober.reset()
+ prober.active = True
+ self._mActiveNum += 1
+ self._mBestGuessProber = None
+
+ def get_charset_name(self):
+ if not self._mBestGuessProber:
+ self.get_confidence()
+ if not self._mBestGuessProber:
+ return None
+# self._mBestGuessProber = self._mProbers[0]
+ return self._mBestGuessProber.get_charset_name()
+
+ def feed(self, aBuf):
+ for prober in self._mProbers:
+ if not prober:
+ continue
+ if not prober.active:
+ continue
+ st = prober.feed(aBuf)
+ if not st:
+ continue
+ if st == constants.eFoundIt:
+ self._mBestGuessProber = prober
+ return self.get_state()
+ elif st == constants.eNotMe:
+ prober.active = False
+ self._mActiveNum -= 1
+ if self._mActiveNum <= 0:
+ self._mState = constants.eNotMe
+ return self.get_state()
+ return self.get_state()
+
+ def get_confidence(self):
+ st = self.get_state()
+ if st == constants.eFoundIt:
+ return 0.99
+ elif st == constants.eNotMe:
+ return 0.01
+ bestConf = 0.0
+ self._mBestGuessProber = None
+ for prober in self._mProbers:
+ if not prober:
+ continue
+ if not prober.active:
+ if constants._debug:
+ sys.stderr.write(prober.get_charset_name()
+ + ' not active\n')
+ continue
+ cf = prober.get_confidence()
+ if constants._debug:
+ sys.stderr.write('%s confidence = %s\n' %
+ (prober.get_charset_name(), cf))
+ if bestConf < cf:
+ bestConf = cf
+ self._mBestGuessProber = prober
+ if not self._mBestGuessProber:
+ return 0.0
+ return bestConf
+# else:
+# self._mBestGuessProber = self._mProbers[0]
+# return self._mBestGuessProber.get_confidence()
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/codingstatemachine.py b/app/src/processing/app/i18n/python/requests/packages/charade/codingstatemachine.py
index 1bda9ff1620..8dd8c917983 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/codingstatemachine.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/codingstatemachine.py
@@ -1,61 +1,61 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is mozilla.org code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 1998
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-from .constants import eStart
-from .compat import wrap_ord
-
-
-class CodingStateMachine:
- def __init__(self, sm):
- self._mModel = sm
- self._mCurrentBytePos = 0
- self._mCurrentCharLen = 0
- self.reset()
-
- def reset(self):
- self._mCurrentState = eStart
-
- def next_state(self, c):
- # for each byte we get its class
- # if it is first byte, we also get byte length
- # PY3K: aBuf is a byte stream, so c is an int, not a byte
- byteCls = self._mModel['classTable'][wrap_ord(c)]
- if self._mCurrentState == eStart:
- self._mCurrentBytePos = 0
- self._mCurrentCharLen = self._mModel['charLenTable'][byteCls]
- # from byte's class and stateTable, we get its next state
- curr_state = (self._mCurrentState * self._mModel['classFactor']
- + byteCls)
- self._mCurrentState = self._mModel['stateTable'][curr_state]
- self._mCurrentBytePos += 1
- return self._mCurrentState
-
- def get_current_charlen(self):
- return self._mCurrentCharLen
-
- def get_coding_state_machine(self):
- return self._mModel['name']
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is mozilla.org code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+from .constants import eStart
+from .compat import wrap_ord
+
+
+class CodingStateMachine:
+ def __init__(self, sm):
+ self._mModel = sm
+ self._mCurrentBytePos = 0
+ self._mCurrentCharLen = 0
+ self.reset()
+
+ def reset(self):
+ self._mCurrentState = eStart
+
+ def next_state(self, c):
+ # for each byte we get its class
+ # if it is first byte, we also get byte length
+ # PY3K: aBuf is a byte stream, so c is an int, not a byte
+ byteCls = self._mModel['classTable'][wrap_ord(c)]
+ if self._mCurrentState == eStart:
+ self._mCurrentBytePos = 0
+ self._mCurrentCharLen = self._mModel['charLenTable'][byteCls]
+ # from byte's class and stateTable, we get its next state
+ curr_state = (self._mCurrentState * self._mModel['classFactor']
+ + byteCls)
+ self._mCurrentState = self._mModel['stateTable'][curr_state]
+ self._mCurrentBytePos += 1
+ return self._mCurrentState
+
+ def get_current_charlen(self):
+ return self._mCurrentCharLen
+
+ def get_coding_state_machine(self):
+ return self._mModel['name']
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/constants.py b/app/src/processing/app/i18n/python/requests/packages/charade/constants.py
index a3d27de250b..e4d148b3c5b 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/constants.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/constants.py
@@ -1,39 +1,39 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is Mozilla Universal charset detector code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 2001
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-# Shy Shalom - original C code
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-_debug = 0
-
-eDetecting = 0
-eFoundIt = 1
-eNotMe = 2
-
-eStart = 0
-eError = 1
-eItsMe = 2
-
-SHORTCUT_THRESHOLD = 0.95
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is Mozilla Universal charset detector code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 2001
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+# Shy Shalom - original C code
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+_debug = 0
+
+eDetecting = 0
+eFoundIt = 1
+eNotMe = 2
+
+eStart = 0
+eError = 1
+eItsMe = 2
+
+SHORTCUT_THRESHOLD = 0.95
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/escprober.py b/app/src/processing/app/i18n/python/requests/packages/charade/escprober.py
index 0063935ce65..80a844ff34c 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/escprober.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/escprober.py
@@ -1,86 +1,86 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is mozilla.org code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 1998
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-from . import constants
-from .escsm import (HZSMModel, ISO2022CNSMModel, ISO2022JPSMModel,
- ISO2022KRSMModel)
-from .charsetprober import CharSetProber
-from .codingstatemachine import CodingStateMachine
-from .compat import wrap_ord
-
-
-class EscCharSetProber(CharSetProber):
- def __init__(self):
- CharSetProber.__init__(self)
- self._mCodingSM = [
- CodingStateMachine(HZSMModel),
- CodingStateMachine(ISO2022CNSMModel),
- CodingStateMachine(ISO2022JPSMModel),
- CodingStateMachine(ISO2022KRSMModel)
- ]
- self.reset()
-
- def reset(self):
- CharSetProber.reset(self)
- for codingSM in self._mCodingSM:
- if not codingSM:
- continue
- codingSM.active = True
- codingSM.reset()
- self._mActiveSM = len(self._mCodingSM)
- self._mDetectedCharset = None
-
- def get_charset_name(self):
- return self._mDetectedCharset
-
- def get_confidence(self):
- if self._mDetectedCharset:
- return 0.99
- else:
- return 0.00
-
- def feed(self, aBuf):
- for c in aBuf:
- # PY3K: aBuf is a byte array, so c is an int, not a byte
- for codingSM in self._mCodingSM:
- if not codingSM:
- continue
- if not codingSM.active:
- continue
- codingState = codingSM.next_state(wrap_ord(c))
- if codingState == constants.eError:
- codingSM.active = False
- self._mActiveSM -= 1
- if self._mActiveSM <= 0:
- self._mState = constants.eNotMe
- return self.get_state()
- elif codingState == constants.eItsMe:
- self._mState = constants.eFoundIt
- self._mDetectedCharset = codingSM.get_coding_state_machine() # nopep8
- return self.get_state()
-
- return self.get_state()
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is mozilla.org code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+from . import constants
+from .escsm import (HZSMModel, ISO2022CNSMModel, ISO2022JPSMModel,
+ ISO2022KRSMModel)
+from .charsetprober import CharSetProber
+from .codingstatemachine import CodingStateMachine
+from .compat import wrap_ord
+
+
+class EscCharSetProber(CharSetProber):
+ def __init__(self):
+ CharSetProber.__init__(self)
+ self._mCodingSM = [
+ CodingStateMachine(HZSMModel),
+ CodingStateMachine(ISO2022CNSMModel),
+ CodingStateMachine(ISO2022JPSMModel),
+ CodingStateMachine(ISO2022KRSMModel)
+ ]
+ self.reset()
+
+ def reset(self):
+ CharSetProber.reset(self)
+ for codingSM in self._mCodingSM:
+ if not codingSM:
+ continue
+ codingSM.active = True
+ codingSM.reset()
+ self._mActiveSM = len(self._mCodingSM)
+ self._mDetectedCharset = None
+
+ def get_charset_name(self):
+ return self._mDetectedCharset
+
+ def get_confidence(self):
+ if self._mDetectedCharset:
+ return 0.99
+ else:
+ return 0.00
+
+ def feed(self, aBuf):
+ for c in aBuf:
+ # PY3K: aBuf is a byte array, so c is an int, not a byte
+ for codingSM in self._mCodingSM:
+ if not codingSM:
+ continue
+ if not codingSM.active:
+ continue
+ codingState = codingSM.next_state(wrap_ord(c))
+ if codingState == constants.eError:
+ codingSM.active = False
+ self._mActiveSM -= 1
+ if self._mActiveSM <= 0:
+ self._mState = constants.eNotMe
+ return self.get_state()
+ elif codingState == constants.eItsMe:
+ self._mState = constants.eFoundIt
+ self._mDetectedCharset = codingSM.get_coding_state_machine() # nopep8
+ return self.get_state()
+
+ return self.get_state()
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/escsm.py b/app/src/processing/app/i18n/python/requests/packages/charade/escsm.py
index 1cf3aa6db6d..bd302b4c61d 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/escsm.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/escsm.py
@@ -1,242 +1,242 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is mozilla.org code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 1998
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-from .constants import eStart, eError, eItsMe
-
-HZ_cls = (
-1,0,0,0,0,0,0,0, # 00 - 07
-0,0,0,0,0,0,0,0, # 08 - 0f
-0,0,0,0,0,0,0,0, # 10 - 17
-0,0,0,1,0,0,0,0, # 18 - 1f
-0,0,0,0,0,0,0,0, # 20 - 27
-0,0,0,0,0,0,0,0, # 28 - 2f
-0,0,0,0,0,0,0,0, # 30 - 37
-0,0,0,0,0,0,0,0, # 38 - 3f
-0,0,0,0,0,0,0,0, # 40 - 47
-0,0,0,0,0,0,0,0, # 48 - 4f
-0,0,0,0,0,0,0,0, # 50 - 57
-0,0,0,0,0,0,0,0, # 58 - 5f
-0,0,0,0,0,0,0,0, # 60 - 67
-0,0,0,0,0,0,0,0, # 68 - 6f
-0,0,0,0,0,0,0,0, # 70 - 77
-0,0,0,4,0,5,2,0, # 78 - 7f
-1,1,1,1,1,1,1,1, # 80 - 87
-1,1,1,1,1,1,1,1, # 88 - 8f
-1,1,1,1,1,1,1,1, # 90 - 97
-1,1,1,1,1,1,1,1, # 98 - 9f
-1,1,1,1,1,1,1,1, # a0 - a7
-1,1,1,1,1,1,1,1, # a8 - af
-1,1,1,1,1,1,1,1, # b0 - b7
-1,1,1,1,1,1,1,1, # b8 - bf
-1,1,1,1,1,1,1,1, # c0 - c7
-1,1,1,1,1,1,1,1, # c8 - cf
-1,1,1,1,1,1,1,1, # d0 - d7
-1,1,1,1,1,1,1,1, # d8 - df
-1,1,1,1,1,1,1,1, # e0 - e7
-1,1,1,1,1,1,1,1, # e8 - ef
-1,1,1,1,1,1,1,1, # f0 - f7
-1,1,1,1,1,1,1,1, # f8 - ff
-)
-
-HZ_st = (
-eStart,eError, 3,eStart,eStart,eStart,eError,eError,# 00-07
-eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,# 08-0f
-eItsMe,eItsMe,eError,eError,eStart,eStart, 4,eError,# 10-17
- 5,eError, 6,eError, 5, 5, 4,eError,# 18-1f
- 4,eError, 4, 4, 4,eError, 4,eError,# 20-27
- 4,eItsMe,eStart,eStart,eStart,eStart,eStart,eStart,# 28-2f
-)
-
-HZCharLenTable = (0, 0, 0, 0, 0, 0)
-
-HZSMModel = {'classTable': HZ_cls,
- 'classFactor': 6,
- 'stateTable': HZ_st,
- 'charLenTable': HZCharLenTable,
- 'name': "HZ-GB-2312"}
-
-ISO2022CN_cls = (
-2,0,0,0,0,0,0,0, # 00 - 07
-0,0,0,0,0,0,0,0, # 08 - 0f
-0,0,0,0,0,0,0,0, # 10 - 17
-0,0,0,1,0,0,0,0, # 18 - 1f
-0,0,0,0,0,0,0,0, # 20 - 27
-0,3,0,0,0,0,0,0, # 28 - 2f
-0,0,0,0,0,0,0,0, # 30 - 37
-0,0,0,0,0,0,0,0, # 38 - 3f
-0,0,0,4,0,0,0,0, # 40 - 47
-0,0,0,0,0,0,0,0, # 48 - 4f
-0,0,0,0,0,0,0,0, # 50 - 57
-0,0,0,0,0,0,0,0, # 58 - 5f
-0,0,0,0,0,0,0,0, # 60 - 67
-0,0,0,0,0,0,0,0, # 68 - 6f
-0,0,0,0,0,0,0,0, # 70 - 77
-0,0,0,0,0,0,0,0, # 78 - 7f
-2,2,2,2,2,2,2,2, # 80 - 87
-2,2,2,2,2,2,2,2, # 88 - 8f
-2,2,2,2,2,2,2,2, # 90 - 97
-2,2,2,2,2,2,2,2, # 98 - 9f
-2,2,2,2,2,2,2,2, # a0 - a7
-2,2,2,2,2,2,2,2, # a8 - af
-2,2,2,2,2,2,2,2, # b0 - b7
-2,2,2,2,2,2,2,2, # b8 - bf
-2,2,2,2,2,2,2,2, # c0 - c7
-2,2,2,2,2,2,2,2, # c8 - cf
-2,2,2,2,2,2,2,2, # d0 - d7
-2,2,2,2,2,2,2,2, # d8 - df
-2,2,2,2,2,2,2,2, # e0 - e7
-2,2,2,2,2,2,2,2, # e8 - ef
-2,2,2,2,2,2,2,2, # f0 - f7
-2,2,2,2,2,2,2,2, # f8 - ff
-)
-
-ISO2022CN_st = (
-eStart, 3,eError,eStart,eStart,eStart,eStart,eStart,# 00-07
-eStart,eError,eError,eError,eError,eError,eError,eError,# 08-0f
-eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,# 10-17
-eItsMe,eItsMe,eItsMe,eError,eError,eError, 4,eError,# 18-1f
-eError,eError,eError,eItsMe,eError,eError,eError,eError,# 20-27
- 5, 6,eError,eError,eError,eError,eError,eError,# 28-2f
-eError,eError,eError,eItsMe,eError,eError,eError,eError,# 30-37
-eError,eError,eError,eError,eError,eItsMe,eError,eStart,# 38-3f
-)
-
-ISO2022CNCharLenTable = (0, 0, 0, 0, 0, 0, 0, 0, 0)
-
-ISO2022CNSMModel = {'classTable': ISO2022CN_cls,
- 'classFactor': 9,
- 'stateTable': ISO2022CN_st,
- 'charLenTable': ISO2022CNCharLenTable,
- 'name': "ISO-2022-CN"}
-
-ISO2022JP_cls = (
-2,0,0,0,0,0,0,0, # 00 - 07
-0,0,0,0,0,0,2,2, # 08 - 0f
-0,0,0,0,0,0,0,0, # 10 - 17
-0,0,0,1,0,0,0,0, # 18 - 1f
-0,0,0,0,7,0,0,0, # 20 - 27
-3,0,0,0,0,0,0,0, # 28 - 2f
-0,0,0,0,0,0,0,0, # 30 - 37
-0,0,0,0,0,0,0,0, # 38 - 3f
-6,0,4,0,8,0,0,0, # 40 - 47
-0,9,5,0,0,0,0,0, # 48 - 4f
-0,0,0,0,0,0,0,0, # 50 - 57
-0,0,0,0,0,0,0,0, # 58 - 5f
-0,0,0,0,0,0,0,0, # 60 - 67
-0,0,0,0,0,0,0,0, # 68 - 6f
-0,0,0,0,0,0,0,0, # 70 - 77
-0,0,0,0,0,0,0,0, # 78 - 7f
-2,2,2,2,2,2,2,2, # 80 - 87
-2,2,2,2,2,2,2,2, # 88 - 8f
-2,2,2,2,2,2,2,2, # 90 - 97
-2,2,2,2,2,2,2,2, # 98 - 9f
-2,2,2,2,2,2,2,2, # a0 - a7
-2,2,2,2,2,2,2,2, # a8 - af
-2,2,2,2,2,2,2,2, # b0 - b7
-2,2,2,2,2,2,2,2, # b8 - bf
-2,2,2,2,2,2,2,2, # c0 - c7
-2,2,2,2,2,2,2,2, # c8 - cf
-2,2,2,2,2,2,2,2, # d0 - d7
-2,2,2,2,2,2,2,2, # d8 - df
-2,2,2,2,2,2,2,2, # e0 - e7
-2,2,2,2,2,2,2,2, # e8 - ef
-2,2,2,2,2,2,2,2, # f0 - f7
-2,2,2,2,2,2,2,2, # f8 - ff
-)
-
-ISO2022JP_st = (
-eStart, 3,eError,eStart,eStart,eStart,eStart,eStart,# 00-07
-eStart,eStart,eError,eError,eError,eError,eError,eError,# 08-0f
-eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,# 10-17
-eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eError,eError,# 18-1f
-eError, 5,eError,eError,eError, 4,eError,eError,# 20-27
-eError,eError,eError, 6,eItsMe,eError,eItsMe,eError,# 28-2f
-eError,eError,eError,eError,eError,eError,eItsMe,eItsMe,# 30-37
-eError,eError,eError,eItsMe,eError,eError,eError,eError,# 38-3f
-eError,eError,eError,eError,eItsMe,eError,eStart,eStart,# 40-47
-)
-
-ISO2022JPCharLenTable = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
-
-ISO2022JPSMModel = {'classTable': ISO2022JP_cls,
- 'classFactor': 10,
- 'stateTable': ISO2022JP_st,
- 'charLenTable': ISO2022JPCharLenTable,
- 'name': "ISO-2022-JP"}
-
-ISO2022KR_cls = (
-2,0,0,0,0,0,0,0, # 00 - 07
-0,0,0,0,0,0,0,0, # 08 - 0f
-0,0,0,0,0,0,0,0, # 10 - 17
-0,0,0,1,0,0,0,0, # 18 - 1f
-0,0,0,0,3,0,0,0, # 20 - 27
-0,4,0,0,0,0,0,0, # 28 - 2f
-0,0,0,0,0,0,0,0, # 30 - 37
-0,0,0,0,0,0,0,0, # 38 - 3f
-0,0,0,5,0,0,0,0, # 40 - 47
-0,0,0,0,0,0,0,0, # 48 - 4f
-0,0,0,0,0,0,0,0, # 50 - 57
-0,0,0,0,0,0,0,0, # 58 - 5f
-0,0,0,0,0,0,0,0, # 60 - 67
-0,0,0,0,0,0,0,0, # 68 - 6f
-0,0,0,0,0,0,0,0, # 70 - 77
-0,0,0,0,0,0,0,0, # 78 - 7f
-2,2,2,2,2,2,2,2, # 80 - 87
-2,2,2,2,2,2,2,2, # 88 - 8f
-2,2,2,2,2,2,2,2, # 90 - 97
-2,2,2,2,2,2,2,2, # 98 - 9f
-2,2,2,2,2,2,2,2, # a0 - a7
-2,2,2,2,2,2,2,2, # a8 - af
-2,2,2,2,2,2,2,2, # b0 - b7
-2,2,2,2,2,2,2,2, # b8 - bf
-2,2,2,2,2,2,2,2, # c0 - c7
-2,2,2,2,2,2,2,2, # c8 - cf
-2,2,2,2,2,2,2,2, # d0 - d7
-2,2,2,2,2,2,2,2, # d8 - df
-2,2,2,2,2,2,2,2, # e0 - e7
-2,2,2,2,2,2,2,2, # e8 - ef
-2,2,2,2,2,2,2,2, # f0 - f7
-2,2,2,2,2,2,2,2, # f8 - ff
-)
-
-ISO2022KR_st = (
-eStart, 3,eError,eStart,eStart,eStart,eError,eError,# 00-07
-eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,# 08-0f
-eItsMe,eItsMe,eError,eError,eError, 4,eError,eError,# 10-17
-eError,eError,eError,eError, 5,eError,eError,eError,# 18-1f
-eError,eError,eError,eItsMe,eStart,eStart,eStart,eStart,# 20-27
-)
-
-ISO2022KRCharLenTable = (0, 0, 0, 0, 0, 0)
-
-ISO2022KRSMModel = {'classTable': ISO2022KR_cls,
- 'classFactor': 6,
- 'stateTable': ISO2022KR_st,
- 'charLenTable': ISO2022KRCharLenTable,
- 'name': "ISO-2022-KR"}
-
-# flake8: noqa
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is mozilla.org code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+from .constants import eStart, eError, eItsMe
+
+HZ_cls = (
+1,0,0,0,0,0,0,0, # 00 - 07
+0,0,0,0,0,0,0,0, # 08 - 0f
+0,0,0,0,0,0,0,0, # 10 - 17
+0,0,0,1,0,0,0,0, # 18 - 1f
+0,0,0,0,0,0,0,0, # 20 - 27
+0,0,0,0,0,0,0,0, # 28 - 2f
+0,0,0,0,0,0,0,0, # 30 - 37
+0,0,0,0,0,0,0,0, # 38 - 3f
+0,0,0,0,0,0,0,0, # 40 - 47
+0,0,0,0,0,0,0,0, # 48 - 4f
+0,0,0,0,0,0,0,0, # 50 - 57
+0,0,0,0,0,0,0,0, # 58 - 5f
+0,0,0,0,0,0,0,0, # 60 - 67
+0,0,0,0,0,0,0,0, # 68 - 6f
+0,0,0,0,0,0,0,0, # 70 - 77
+0,0,0,4,0,5,2,0, # 78 - 7f
+1,1,1,1,1,1,1,1, # 80 - 87
+1,1,1,1,1,1,1,1, # 88 - 8f
+1,1,1,1,1,1,1,1, # 90 - 97
+1,1,1,1,1,1,1,1, # 98 - 9f
+1,1,1,1,1,1,1,1, # a0 - a7
+1,1,1,1,1,1,1,1, # a8 - af
+1,1,1,1,1,1,1,1, # b0 - b7
+1,1,1,1,1,1,1,1, # b8 - bf
+1,1,1,1,1,1,1,1, # c0 - c7
+1,1,1,1,1,1,1,1, # c8 - cf
+1,1,1,1,1,1,1,1, # d0 - d7
+1,1,1,1,1,1,1,1, # d8 - df
+1,1,1,1,1,1,1,1, # e0 - e7
+1,1,1,1,1,1,1,1, # e8 - ef
+1,1,1,1,1,1,1,1, # f0 - f7
+1,1,1,1,1,1,1,1, # f8 - ff
+)
+
+HZ_st = (
+eStart,eError, 3,eStart,eStart,eStart,eError,eError,# 00-07
+eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,# 08-0f
+eItsMe,eItsMe,eError,eError,eStart,eStart, 4,eError,# 10-17
+ 5,eError, 6,eError, 5, 5, 4,eError,# 18-1f
+ 4,eError, 4, 4, 4,eError, 4,eError,# 20-27
+ 4,eItsMe,eStart,eStart,eStart,eStart,eStart,eStart,# 28-2f
+)
+
+HZCharLenTable = (0, 0, 0, 0, 0, 0)
+
+HZSMModel = {'classTable': HZ_cls,
+ 'classFactor': 6,
+ 'stateTable': HZ_st,
+ 'charLenTable': HZCharLenTable,
+ 'name': "HZ-GB-2312"}
+
+ISO2022CN_cls = (
+2,0,0,0,0,0,0,0, # 00 - 07
+0,0,0,0,0,0,0,0, # 08 - 0f
+0,0,0,0,0,0,0,0, # 10 - 17
+0,0,0,1,0,0,0,0, # 18 - 1f
+0,0,0,0,0,0,0,0, # 20 - 27
+0,3,0,0,0,0,0,0, # 28 - 2f
+0,0,0,0,0,0,0,0, # 30 - 37
+0,0,0,0,0,0,0,0, # 38 - 3f
+0,0,0,4,0,0,0,0, # 40 - 47
+0,0,0,0,0,0,0,0, # 48 - 4f
+0,0,0,0,0,0,0,0, # 50 - 57
+0,0,0,0,0,0,0,0, # 58 - 5f
+0,0,0,0,0,0,0,0, # 60 - 67
+0,0,0,0,0,0,0,0, # 68 - 6f
+0,0,0,0,0,0,0,0, # 70 - 77
+0,0,0,0,0,0,0,0, # 78 - 7f
+2,2,2,2,2,2,2,2, # 80 - 87
+2,2,2,2,2,2,2,2, # 88 - 8f
+2,2,2,2,2,2,2,2, # 90 - 97
+2,2,2,2,2,2,2,2, # 98 - 9f
+2,2,2,2,2,2,2,2, # a0 - a7
+2,2,2,2,2,2,2,2, # a8 - af
+2,2,2,2,2,2,2,2, # b0 - b7
+2,2,2,2,2,2,2,2, # b8 - bf
+2,2,2,2,2,2,2,2, # c0 - c7
+2,2,2,2,2,2,2,2, # c8 - cf
+2,2,2,2,2,2,2,2, # d0 - d7
+2,2,2,2,2,2,2,2, # d8 - df
+2,2,2,2,2,2,2,2, # e0 - e7
+2,2,2,2,2,2,2,2, # e8 - ef
+2,2,2,2,2,2,2,2, # f0 - f7
+2,2,2,2,2,2,2,2, # f8 - ff
+)
+
+ISO2022CN_st = (
+eStart, 3,eError,eStart,eStart,eStart,eStart,eStart,# 00-07
+eStart,eError,eError,eError,eError,eError,eError,eError,# 08-0f
+eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,# 10-17
+eItsMe,eItsMe,eItsMe,eError,eError,eError, 4,eError,# 18-1f
+eError,eError,eError,eItsMe,eError,eError,eError,eError,# 20-27
+ 5, 6,eError,eError,eError,eError,eError,eError,# 28-2f
+eError,eError,eError,eItsMe,eError,eError,eError,eError,# 30-37
+eError,eError,eError,eError,eError,eItsMe,eError,eStart,# 38-3f
+)
+
+ISO2022CNCharLenTable = (0, 0, 0, 0, 0, 0, 0, 0, 0)
+
+ISO2022CNSMModel = {'classTable': ISO2022CN_cls,
+ 'classFactor': 9,
+ 'stateTable': ISO2022CN_st,
+ 'charLenTable': ISO2022CNCharLenTable,
+ 'name': "ISO-2022-CN"}
+
+ISO2022JP_cls = (
+2,0,0,0,0,0,0,0, # 00 - 07
+0,0,0,0,0,0,2,2, # 08 - 0f
+0,0,0,0,0,0,0,0, # 10 - 17
+0,0,0,1,0,0,0,0, # 18 - 1f
+0,0,0,0,7,0,0,0, # 20 - 27
+3,0,0,0,0,0,0,0, # 28 - 2f
+0,0,0,0,0,0,0,0, # 30 - 37
+0,0,0,0,0,0,0,0, # 38 - 3f
+6,0,4,0,8,0,0,0, # 40 - 47
+0,9,5,0,0,0,0,0, # 48 - 4f
+0,0,0,0,0,0,0,0, # 50 - 57
+0,0,0,0,0,0,0,0, # 58 - 5f
+0,0,0,0,0,0,0,0, # 60 - 67
+0,0,0,0,0,0,0,0, # 68 - 6f
+0,0,0,0,0,0,0,0, # 70 - 77
+0,0,0,0,0,0,0,0, # 78 - 7f
+2,2,2,2,2,2,2,2, # 80 - 87
+2,2,2,2,2,2,2,2, # 88 - 8f
+2,2,2,2,2,2,2,2, # 90 - 97
+2,2,2,2,2,2,2,2, # 98 - 9f
+2,2,2,2,2,2,2,2, # a0 - a7
+2,2,2,2,2,2,2,2, # a8 - af
+2,2,2,2,2,2,2,2, # b0 - b7
+2,2,2,2,2,2,2,2, # b8 - bf
+2,2,2,2,2,2,2,2, # c0 - c7
+2,2,2,2,2,2,2,2, # c8 - cf
+2,2,2,2,2,2,2,2, # d0 - d7
+2,2,2,2,2,2,2,2, # d8 - df
+2,2,2,2,2,2,2,2, # e0 - e7
+2,2,2,2,2,2,2,2, # e8 - ef
+2,2,2,2,2,2,2,2, # f0 - f7
+2,2,2,2,2,2,2,2, # f8 - ff
+)
+
+ISO2022JP_st = (
+eStart, 3,eError,eStart,eStart,eStart,eStart,eStart,# 00-07
+eStart,eStart,eError,eError,eError,eError,eError,eError,# 08-0f
+eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,# 10-17
+eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eError,eError,# 18-1f
+eError, 5,eError,eError,eError, 4,eError,eError,# 20-27
+eError,eError,eError, 6,eItsMe,eError,eItsMe,eError,# 28-2f
+eError,eError,eError,eError,eError,eError,eItsMe,eItsMe,# 30-37
+eError,eError,eError,eItsMe,eError,eError,eError,eError,# 38-3f
+eError,eError,eError,eError,eItsMe,eError,eStart,eStart,# 40-47
+)
+
+ISO2022JPCharLenTable = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
+
+ISO2022JPSMModel = {'classTable': ISO2022JP_cls,
+ 'classFactor': 10,
+ 'stateTable': ISO2022JP_st,
+ 'charLenTable': ISO2022JPCharLenTable,
+ 'name': "ISO-2022-JP"}
+
+ISO2022KR_cls = (
+2,0,0,0,0,0,0,0, # 00 - 07
+0,0,0,0,0,0,0,0, # 08 - 0f
+0,0,0,0,0,0,0,0, # 10 - 17
+0,0,0,1,0,0,0,0, # 18 - 1f
+0,0,0,0,3,0,0,0, # 20 - 27
+0,4,0,0,0,0,0,0, # 28 - 2f
+0,0,0,0,0,0,0,0, # 30 - 37
+0,0,0,0,0,0,0,0, # 38 - 3f
+0,0,0,5,0,0,0,0, # 40 - 47
+0,0,0,0,0,0,0,0, # 48 - 4f
+0,0,0,0,0,0,0,0, # 50 - 57
+0,0,0,0,0,0,0,0, # 58 - 5f
+0,0,0,0,0,0,0,0, # 60 - 67
+0,0,0,0,0,0,0,0, # 68 - 6f
+0,0,0,0,0,0,0,0, # 70 - 77
+0,0,0,0,0,0,0,0, # 78 - 7f
+2,2,2,2,2,2,2,2, # 80 - 87
+2,2,2,2,2,2,2,2, # 88 - 8f
+2,2,2,2,2,2,2,2, # 90 - 97
+2,2,2,2,2,2,2,2, # 98 - 9f
+2,2,2,2,2,2,2,2, # a0 - a7
+2,2,2,2,2,2,2,2, # a8 - af
+2,2,2,2,2,2,2,2, # b0 - b7
+2,2,2,2,2,2,2,2, # b8 - bf
+2,2,2,2,2,2,2,2, # c0 - c7
+2,2,2,2,2,2,2,2, # c8 - cf
+2,2,2,2,2,2,2,2, # d0 - d7
+2,2,2,2,2,2,2,2, # d8 - df
+2,2,2,2,2,2,2,2, # e0 - e7
+2,2,2,2,2,2,2,2, # e8 - ef
+2,2,2,2,2,2,2,2, # f0 - f7
+2,2,2,2,2,2,2,2, # f8 - ff
+)
+
+ISO2022KR_st = (
+eStart, 3,eError,eStart,eStart,eStart,eError,eError,# 00-07
+eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,# 08-0f
+eItsMe,eItsMe,eError,eError,eError, 4,eError,eError,# 10-17
+eError,eError,eError,eError, 5,eError,eError,eError,# 18-1f
+eError,eError,eError,eItsMe,eStart,eStart,eStart,eStart,# 20-27
+)
+
+ISO2022KRCharLenTable = (0, 0, 0, 0, 0, 0)
+
+ISO2022KRSMModel = {'classTable': ISO2022KR_cls,
+ 'classFactor': 6,
+ 'stateTable': ISO2022KR_st,
+ 'charLenTable': ISO2022KRCharLenTable,
+ 'name': "ISO-2022-KR"}
+
+# flake8: noqa
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/eucjpprober.py b/app/src/processing/app/i18n/python/requests/packages/charade/eucjpprober.py
index d70cfbbb017..8e64fdcc266 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/eucjpprober.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/eucjpprober.py
@@ -1,90 +1,90 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is mozilla.org code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 1998
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-import sys
-from . import constants
-from .mbcharsetprober import MultiByteCharSetProber
-from .codingstatemachine import CodingStateMachine
-from .chardistribution import EUCJPDistributionAnalysis
-from .jpcntx import EUCJPContextAnalysis
-from .mbcssm import EUCJPSMModel
-
-
-class EUCJPProber(MultiByteCharSetProber):
- def __init__(self):
- MultiByteCharSetProber.__init__(self)
- self._mCodingSM = CodingStateMachine(EUCJPSMModel)
- self._mDistributionAnalyzer = EUCJPDistributionAnalysis()
- self._mContextAnalyzer = EUCJPContextAnalysis()
- self.reset()
-
- def reset(self):
- MultiByteCharSetProber.reset(self)
- self._mContextAnalyzer.reset()
-
- def get_charset_name(self):
- return "EUC-JP"
-
- def feed(self, aBuf):
- aLen = len(aBuf)
- for i in range(0, aLen):
- # PY3K: aBuf is a byte array, so aBuf[i] is an int, not a byte
- codingState = self._mCodingSM.next_state(aBuf[i])
- if codingState == constants.eError:
- if constants._debug:
- sys.stderr.write(self.get_charset_name()
- + ' prober hit error at byte ' + str(i)
- + '\n')
- self._mState = constants.eNotMe
- break
- elif codingState == constants.eItsMe:
- self._mState = constants.eFoundIt
- break
- elif codingState == constants.eStart:
- charLen = self._mCodingSM.get_current_charlen()
- if i == 0:
- self._mLastChar[1] = aBuf[0]
- self._mContextAnalyzer.feed(self._mLastChar, charLen)
- self._mDistributionAnalyzer.feed(self._mLastChar, charLen)
- else:
- self._mContextAnalyzer.feed(aBuf[i - 1:i + 1], charLen)
- self._mDistributionAnalyzer.feed(aBuf[i - 1:i + 1],
- charLen)
-
- self._mLastChar[0] = aBuf[aLen - 1]
-
- if self.get_state() == constants.eDetecting:
- if (self._mContextAnalyzer.got_enough_data() and
- (self.get_confidence() > constants.SHORTCUT_THRESHOLD)):
- self._mState = constants.eFoundIt
-
- return self.get_state()
-
- def get_confidence(self):
- contxtCf = self._mContextAnalyzer.get_confidence()
- distribCf = self._mDistributionAnalyzer.get_confidence()
- return max(contxtCf, distribCf)
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is mozilla.org code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+import sys
+from . import constants
+from .mbcharsetprober import MultiByteCharSetProber
+from .codingstatemachine import CodingStateMachine
+from .chardistribution import EUCJPDistributionAnalysis
+from .jpcntx import EUCJPContextAnalysis
+from .mbcssm import EUCJPSMModel
+
+
+class EUCJPProber(MultiByteCharSetProber):
+ def __init__(self):
+ MultiByteCharSetProber.__init__(self)
+ self._mCodingSM = CodingStateMachine(EUCJPSMModel)
+ self._mDistributionAnalyzer = EUCJPDistributionAnalysis()
+ self._mContextAnalyzer = EUCJPContextAnalysis()
+ self.reset()
+
+ def reset(self):
+ MultiByteCharSetProber.reset(self)
+ self._mContextAnalyzer.reset()
+
+ def get_charset_name(self):
+ return "EUC-JP"
+
+ def feed(self, aBuf):
+ aLen = len(aBuf)
+ for i in range(0, aLen):
+ # PY3K: aBuf is a byte array, so aBuf[i] is an int, not a byte
+ codingState = self._mCodingSM.next_state(aBuf[i])
+ if codingState == constants.eError:
+ if constants._debug:
+ sys.stderr.write(self.get_charset_name()
+ + ' prober hit error at byte ' + str(i)
+ + '\n')
+ self._mState = constants.eNotMe
+ break
+ elif codingState == constants.eItsMe:
+ self._mState = constants.eFoundIt
+ break
+ elif codingState == constants.eStart:
+ charLen = self._mCodingSM.get_current_charlen()
+ if i == 0:
+ self._mLastChar[1] = aBuf[0]
+ self._mContextAnalyzer.feed(self._mLastChar, charLen)
+ self._mDistributionAnalyzer.feed(self._mLastChar, charLen)
+ else:
+ self._mContextAnalyzer.feed(aBuf[i - 1:i + 1], charLen)
+ self._mDistributionAnalyzer.feed(aBuf[i - 1:i + 1],
+ charLen)
+
+ self._mLastChar[0] = aBuf[aLen - 1]
+
+ if self.get_state() == constants.eDetecting:
+ if (self._mContextAnalyzer.got_enough_data() and
+ (self.get_confidence() > constants.SHORTCUT_THRESHOLD)):
+ self._mState = constants.eFoundIt
+
+ return self.get_state()
+
+ def get_confidence(self):
+ contxtCf = self._mContextAnalyzer.get_confidence()
+ distribCf = self._mDistributionAnalyzer.get_confidence()
+ return max(contxtCf, distribCf)
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/euckrprober.py b/app/src/processing/app/i18n/python/requests/packages/charade/euckrprober.py
index def3e429028..5982a46b606 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/euckrprober.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/euckrprober.py
@@ -1,42 +1,42 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is mozilla.org code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 1998
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-from .mbcharsetprober import MultiByteCharSetProber
-from .codingstatemachine import CodingStateMachine
-from .chardistribution import EUCKRDistributionAnalysis
-from .mbcssm import EUCKRSMModel
-
-
-class EUCKRProber(MultiByteCharSetProber):
- def __init__(self):
- MultiByteCharSetProber.__init__(self)
- self._mCodingSM = CodingStateMachine(EUCKRSMModel)
- self._mDistributionAnalyzer = EUCKRDistributionAnalysis()
- self.reset()
-
- def get_charset_name(self):
- return "EUC-KR"
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is mozilla.org code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+from .mbcharsetprober import MultiByteCharSetProber
+from .codingstatemachine import CodingStateMachine
+from .chardistribution import EUCKRDistributionAnalysis
+from .mbcssm import EUCKRSMModel
+
+
+class EUCKRProber(MultiByteCharSetProber):
+ def __init__(self):
+ MultiByteCharSetProber.__init__(self)
+ self._mCodingSM = CodingStateMachine(EUCKRSMModel)
+ self._mDistributionAnalyzer = EUCKRDistributionAnalysis()
+ self.reset()
+
+ def get_charset_name(self):
+ return "EUC-KR"
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/euctwprober.py b/app/src/processing/app/i18n/python/requests/packages/charade/euctwprober.py
index e601adfdc60..fe652fe37a9 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/euctwprober.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/euctwprober.py
@@ -1,41 +1,41 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is mozilla.org code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 1998
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-from .mbcharsetprober import MultiByteCharSetProber
-from .codingstatemachine import CodingStateMachine
-from .chardistribution import EUCTWDistributionAnalysis
-from .mbcssm import EUCTWSMModel
-
-class EUCTWProber(MultiByteCharSetProber):
- def __init__(self):
- MultiByteCharSetProber.__init__(self)
- self._mCodingSM = CodingStateMachine(EUCTWSMModel)
- self._mDistributionAnalyzer = EUCTWDistributionAnalysis()
- self.reset()
-
- def get_charset_name(self):
- return "EUC-TW"
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is mozilla.org code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+from .mbcharsetprober import MultiByteCharSetProber
+from .codingstatemachine import CodingStateMachine
+from .chardistribution import EUCTWDistributionAnalysis
+from .mbcssm import EUCTWSMModel
+
+class EUCTWProber(MultiByteCharSetProber):
+ def __init__(self):
+ MultiByteCharSetProber.__init__(self)
+ self._mCodingSM = CodingStateMachine(EUCTWSMModel)
+ self._mDistributionAnalyzer = EUCTWDistributionAnalysis()
+ self.reset()
+
+ def get_charset_name(self):
+ return "EUC-TW"
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/gb2312prober.py b/app/src/processing/app/i18n/python/requests/packages/charade/gb2312prober.py
index 643fe2519e7..0325a2d8614 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/gb2312prober.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/gb2312prober.py
@@ -1,41 +1,41 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is mozilla.org code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 1998
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-from .mbcharsetprober import MultiByteCharSetProber
-from .codingstatemachine import CodingStateMachine
-from .chardistribution import GB2312DistributionAnalysis
-from .mbcssm import GB2312SMModel
-
-class GB2312Prober(MultiByteCharSetProber):
- def __init__(self):
- MultiByteCharSetProber.__init__(self)
- self._mCodingSM = CodingStateMachine(GB2312SMModel)
- self._mDistributionAnalyzer = GB2312DistributionAnalysis()
- self.reset()
-
- def get_charset_name(self):
- return "GB2312"
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is mozilla.org code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+from .mbcharsetprober import MultiByteCharSetProber
+from .codingstatemachine import CodingStateMachine
+from .chardistribution import GB2312DistributionAnalysis
+from .mbcssm import GB2312SMModel
+
+class GB2312Prober(MultiByteCharSetProber):
+ def __init__(self):
+ MultiByteCharSetProber.__init__(self)
+ self._mCodingSM = CodingStateMachine(GB2312SMModel)
+ self._mDistributionAnalyzer = GB2312DistributionAnalysis()
+ self.reset()
+
+ def get_charset_name(self):
+ return "GB2312"
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/hebrewprober.py b/app/src/processing/app/i18n/python/requests/packages/charade/hebrewprober.py
index 90d171f302d..ba225c5ef43 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/hebrewprober.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/hebrewprober.py
@@ -1,283 +1,283 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is Mozilla Universal charset detector code.
-#
-# The Initial Developer of the Original Code is
-# Shy Shalom
-# Portions created by the Initial Developer are Copyright (C) 2005
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-from .charsetprober import CharSetProber
-from .constants import eNotMe, eDetecting
-from .compat import wrap_ord
-
-# This prober doesn't actually recognize a language or a charset.
-# It is a helper prober for the use of the Hebrew model probers
-
-### General ideas of the Hebrew charset recognition ###
-#
-# Four main charsets exist in Hebrew:
-# "ISO-8859-8" - Visual Hebrew
-# "windows-1255" - Logical Hebrew
-# "ISO-8859-8-I" - Logical Hebrew
-# "x-mac-hebrew" - ?? Logical Hebrew ??
-#
-# Both "ISO" charsets use a completely identical set of code points, whereas
-# "windows-1255" and "x-mac-hebrew" are two different proper supersets of
-# these code points. windows-1255 defines additional characters in the range
-# 0x80-0x9F as some misc punctuation marks as well as some Hebrew-specific
-# diacritics and additional 'Yiddish' ligature letters in the range 0xc0-0xd6.
-# x-mac-hebrew defines similar additional code points but with a different
-# mapping.
-#
-# As far as an average Hebrew text with no diacritics is concerned, all four
-# charsets are identical with respect to code points. Meaning that for the
-# main Hebrew alphabet, all four map the same values to all 27 Hebrew letters
-# (including final letters).
-#
-# The dominant difference between these charsets is their directionality.
-# "Visual" directionality means that the text is ordered as if the renderer is
-# not aware of a BIDI rendering algorithm. The renderer sees the text and
-# draws it from left to right. The text itself when ordered naturally is read
-# backwards. A buffer of Visual Hebrew generally looks like so:
-# "[last word of first line spelled backwards] [whole line ordered backwards
-# and spelled backwards] [first word of first line spelled backwards]
-# [end of line] [last word of second line] ... etc' "
-# adding punctuation marks, numbers and English text to visual text is
-# naturally also "visual" and from left to right.
-#
-# "Logical" directionality means the text is ordered "naturally" according to
-# the order it is read. It is the responsibility of the renderer to display
-# the text from right to left. A BIDI algorithm is used to place general
-# punctuation marks, numbers and English text in the text.
-#
-# Texts in x-mac-hebrew are almost impossible to find on the Internet. From
-# what little evidence I could find, it seems that its general directionality
-# is Logical.
-#
-# To sum up all of the above, the Hebrew probing mechanism knows about two
-# charsets:
-# Visual Hebrew - "ISO-8859-8" - backwards text - Words and sentences are
-# backwards while line order is natural. For charset recognition purposes
-# the line order is unimportant (In fact, for this implementation, even
-# word order is unimportant).
-# Logical Hebrew - "windows-1255" - normal, naturally ordered text.
-#
-# "ISO-8859-8-I" is a subset of windows-1255 and doesn't need to be
-# specifically identified.
-# "x-mac-hebrew" is also identified as windows-1255. A text in x-mac-hebrew
-# that contain special punctuation marks or diacritics is displayed with
-# some unconverted characters showing as question marks. This problem might
-# be corrected using another model prober for x-mac-hebrew. Due to the fact
-# that x-mac-hebrew texts are so rare, writing another model prober isn't
-# worth the effort and performance hit.
-#
-#### The Prober ####
-#
-# The prober is divided between two SBCharSetProbers and a HebrewProber,
-# all of which are managed, created, fed data, inquired and deleted by the
-# SBCSGroupProber. The two SBCharSetProbers identify that the text is in
-# fact some kind of Hebrew, Logical or Visual. The final decision about which
-# one is it is made by the HebrewProber by combining final-letter scores
-# with the scores of the two SBCharSetProbers to produce a final answer.
-#
-# The SBCSGroupProber is responsible for stripping the original text of HTML
-# tags, English characters, numbers, low-ASCII punctuation characters, spaces
-# and new lines. It reduces any sequence of such characters to a single space.
-# The buffer fed to each prober in the SBCS group prober is pure text in
-# high-ASCII.
-# The two SBCharSetProbers (model probers) share the same language model:
-# Win1255Model.
-# The first SBCharSetProber uses the model normally as any other
-# SBCharSetProber does, to recognize windows-1255, upon which this model was
-# built. The second SBCharSetProber is told to make the pair-of-letter
-# lookup in the language model backwards. This in practice exactly simulates
-# a visual Hebrew model using the windows-1255 logical Hebrew model.
-#
-# The HebrewProber is not using any language model. All it does is look for
-# final-letter evidence suggesting the text is either logical Hebrew or visual
-# Hebrew. Disjointed from the model probers, the results of the HebrewProber
-# alone are meaningless. HebrewProber always returns 0.00 as confidence
-# since it never identifies a charset by itself. Instead, the pointer to the
-# HebrewProber is passed to the model probers as a helper "Name Prober".
-# When the Group prober receives a positive identification from any prober,
-# it asks for the name of the charset identified. If the prober queried is a
-# Hebrew model prober, the model prober forwards the call to the
-# HebrewProber to make the final decision. In the HebrewProber, the
-# decision is made according to the final-letters scores maintained and Both
-# model probers scores. The answer is returned in the form of the name of the
-# charset identified, either "windows-1255" or "ISO-8859-8".
-
-# windows-1255 / ISO-8859-8 code points of interest
-FINAL_KAF = 0xea
-NORMAL_KAF = 0xeb
-FINAL_MEM = 0xed
-NORMAL_MEM = 0xee
-FINAL_NUN = 0xef
-NORMAL_NUN = 0xf0
-FINAL_PE = 0xf3
-NORMAL_PE = 0xf4
-FINAL_TSADI = 0xf5
-NORMAL_TSADI = 0xf6
-
-# Minimum Visual vs Logical final letter score difference.
-# If the difference is below this, don't rely solely on the final letter score
-# distance.
-MIN_FINAL_CHAR_DISTANCE = 5
-
-# Minimum Visual vs Logical model score difference.
-# If the difference is below this, don't rely at all on the model score
-# distance.
-MIN_MODEL_DISTANCE = 0.01
-
-VISUAL_HEBREW_NAME = "ISO-8859-8"
-LOGICAL_HEBREW_NAME = "windows-1255"
-
-
-class HebrewProber(CharSetProber):
- def __init__(self):
- CharSetProber.__init__(self)
- self._mLogicalProber = None
- self._mVisualProber = None
- self.reset()
-
- def reset(self):
- self._mFinalCharLogicalScore = 0
- self._mFinalCharVisualScore = 0
- # The two last characters seen in the previous buffer,
- # mPrev and mBeforePrev are initialized to space in order to simulate
- # a word delimiter at the beginning of the data
- self._mPrev = ' '
- self._mBeforePrev = ' '
- # These probers are owned by the group prober.
-
- def set_model_probers(self, logicalProber, visualProber):
- self._mLogicalProber = logicalProber
- self._mVisualProber = visualProber
-
- def is_final(self, c):
- return wrap_ord(c) in [FINAL_KAF, FINAL_MEM, FINAL_NUN, FINAL_PE,
- FINAL_TSADI]
-
- def is_non_final(self, c):
- # The normal Tsadi is not a good Non-Final letter due to words like
- # 'lechotet' (to chat) containing an apostrophe after the tsadi. This
- # apostrophe is converted to a space in FilterWithoutEnglishLetters
- # causing the Non-Final tsadi to appear at an end of a word even
- # though this is not the case in the original text.
- # The letters Pe and Kaf rarely display a related behavior of not being
- # a good Non-Final letter. Words like 'Pop', 'Winamp' and 'Mubarak'
- # for example legally end with a Non-Final Pe or Kaf. However, the
- # benefit of these letters as Non-Final letters outweighs the damage
- # since these words are quite rare.
- return wrap_ord(c) in [NORMAL_KAF, NORMAL_MEM, NORMAL_NUN, NORMAL_PE]
-
- def feed(self, aBuf):
- # Final letter analysis for logical-visual decision.
- # Look for evidence that the received buffer is either logical Hebrew
- # or visual Hebrew.
- # The following cases are checked:
- # 1) A word longer than 1 letter, ending with a final letter. This is
- # an indication that the text is laid out "naturally" since the
- # final letter really appears at the end. +1 for logical score.
- # 2) A word longer than 1 letter, ending with a Non-Final letter. In
- # normal Hebrew, words ending with Kaf, Mem, Nun, Pe or Tsadi,
- # should not end with the Non-Final form of that letter. Exceptions
- # to this rule are mentioned above in isNonFinal(). This is an
- # indication that the text is laid out backwards. +1 for visual
- # score
- # 3) A word longer than 1 letter, starting with a final letter. Final
- # letters should not appear at the beginning of a word. This is an
- # indication that the text is laid out backwards. +1 for visual
- # score.
- #
- # The visual score and logical score are accumulated throughout the
- # text and are finally checked against each other in GetCharSetName().
- # No checking for final letters in the middle of words is done since
- # that case is not an indication for either Logical or Visual text.
- #
- # We automatically filter out all 7-bit characters (replace them with
- # spaces) so the word boundary detection works properly. [MAP]
-
- if self.get_state() == eNotMe:
- # Both model probers say it's not them. No reason to continue.
- return eNotMe
-
- aBuf = self.filter_high_bit_only(aBuf)
-
- for cur in aBuf:
- if cur == ' ':
- # We stand on a space - a word just ended
- if self._mBeforePrev != ' ':
- # next-to-last char was not a space so self._mPrev is not a
- # 1 letter word
- if self.is_final(self._mPrev):
- # case (1) [-2:not space][-1:final letter][cur:space]
- self._mFinalCharLogicalScore += 1
- elif self.is_non_final(self._mPrev):
- # case (2) [-2:not space][-1:Non-Final letter][
- # cur:space]
- self._mFinalCharVisualScore += 1
- else:
- # Not standing on a space
- if ((self._mBeforePrev == ' ') and
- (self.is_final(self._mPrev)) and (cur != ' ')):
- # case (3) [-2:space][-1:final letter][cur:not space]
- self._mFinalCharVisualScore += 1
- self._mBeforePrev = self._mPrev
- self._mPrev = cur
-
- # Forever detecting, till the end or until both model probers return
- # eNotMe (handled above)
- return eDetecting
-
- def get_charset_name(self):
- # Make the decision: is it Logical or Visual?
- # If the final letter score distance is dominant enough, rely on it.
- finalsub = self._mFinalCharLogicalScore - self._mFinalCharVisualScore
- if finalsub >= MIN_FINAL_CHAR_DISTANCE:
- return LOGICAL_HEBREW_NAME
- if finalsub <= -MIN_FINAL_CHAR_DISTANCE:
- return VISUAL_HEBREW_NAME
-
- # It's not dominant enough, try to rely on the model scores instead.
- modelsub = (self._mLogicalProber.get_confidence()
- - self._mVisualProber.get_confidence())
- if modelsub > MIN_MODEL_DISTANCE:
- return LOGICAL_HEBREW_NAME
- if modelsub < -MIN_MODEL_DISTANCE:
- return VISUAL_HEBREW_NAME
-
- # Still no good, back to final letter distance, maybe it'll save the
- # day.
- if finalsub < 0.0:
- return VISUAL_HEBREW_NAME
-
- # (finalsub > 0 - Logical) or (don't know what to do) default to
- # Logical.
- return LOGICAL_HEBREW_NAME
-
- def get_state(self):
- # Remain active as long as any of the model probers are active.
- if (self._mLogicalProber.get_state() == eNotMe) and \
- (self._mVisualProber.get_state() == eNotMe):
- return eNotMe
- return eDetecting
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is Mozilla Universal charset detector code.
+#
+# The Initial Developer of the Original Code is
+# Shy Shalom
+# Portions created by the Initial Developer are Copyright (C) 2005
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+from .charsetprober import CharSetProber
+from .constants import eNotMe, eDetecting
+from .compat import wrap_ord
+
+# This prober doesn't actually recognize a language or a charset.
+# It is a helper prober for the use of the Hebrew model probers
+
+### General ideas of the Hebrew charset recognition ###
+#
+# Four main charsets exist in Hebrew:
+# "ISO-8859-8" - Visual Hebrew
+# "windows-1255" - Logical Hebrew
+# "ISO-8859-8-I" - Logical Hebrew
+# "x-mac-hebrew" - ?? Logical Hebrew ??
+#
+# Both "ISO" charsets use a completely identical set of code points, whereas
+# "windows-1255" and "x-mac-hebrew" are two different proper supersets of
+# these code points. windows-1255 defines additional characters in the range
+# 0x80-0x9F as some misc punctuation marks as well as some Hebrew-specific
+# diacritics and additional 'Yiddish' ligature letters in the range 0xc0-0xd6.
+# x-mac-hebrew defines similar additional code points but with a different
+# mapping.
+#
+# As far as an average Hebrew text with no diacritics is concerned, all four
+# charsets are identical with respect to code points. Meaning that for the
+# main Hebrew alphabet, all four map the same values to all 27 Hebrew letters
+# (including final letters).
+#
+# The dominant difference between these charsets is their directionality.
+# "Visual" directionality means that the text is ordered as if the renderer is
+# not aware of a BIDI rendering algorithm. The renderer sees the text and
+# draws it from left to right. The text itself when ordered naturally is read
+# backwards. A buffer of Visual Hebrew generally looks like so:
+# "[last word of first line spelled backwards] [whole line ordered backwards
+# and spelled backwards] [first word of first line spelled backwards]
+# [end of line] [last word of second line] ... etc' "
+# adding punctuation marks, numbers and English text to visual text is
+# naturally also "visual" and from left to right.
+#
+# "Logical" directionality means the text is ordered "naturally" according to
+# the order it is read. It is the responsibility of the renderer to display
+# the text from right to left. A BIDI algorithm is used to place general
+# punctuation marks, numbers and English text in the text.
+#
+# Texts in x-mac-hebrew are almost impossible to find on the Internet. From
+# what little evidence I could find, it seems that its general directionality
+# is Logical.
+#
+# To sum up all of the above, the Hebrew probing mechanism knows about two
+# charsets:
+# Visual Hebrew - "ISO-8859-8" - backwards text - Words and sentences are
+# backwards while line order is natural. For charset recognition purposes
+# the line order is unimportant (In fact, for this implementation, even
+# word order is unimportant).
+# Logical Hebrew - "windows-1255" - normal, naturally ordered text.
+#
+# "ISO-8859-8-I" is a subset of windows-1255 and doesn't need to be
+# specifically identified.
+# "x-mac-hebrew" is also identified as windows-1255. A text in x-mac-hebrew
+# that contain special punctuation marks or diacritics is displayed with
+# some unconverted characters showing as question marks. This problem might
+# be corrected using another model prober for x-mac-hebrew. Due to the fact
+# that x-mac-hebrew texts are so rare, writing another model prober isn't
+# worth the effort and performance hit.
+#
+#### The Prober ####
+#
+# The prober is divided between two SBCharSetProbers and a HebrewProber,
+# all of which are managed, created, fed data, inquired and deleted by the
+# SBCSGroupProber. The two SBCharSetProbers identify that the text is in
+# fact some kind of Hebrew, Logical or Visual. The final decision about which
+# one is it is made by the HebrewProber by combining final-letter scores
+# with the scores of the two SBCharSetProbers to produce a final answer.
+#
+# The SBCSGroupProber is responsible for stripping the original text of HTML
+# tags, English characters, numbers, low-ASCII punctuation characters, spaces
+# and new lines. It reduces any sequence of such characters to a single space.
+# The buffer fed to each prober in the SBCS group prober is pure text in
+# high-ASCII.
+# The two SBCharSetProbers (model probers) share the same language model:
+# Win1255Model.
+# The first SBCharSetProber uses the model normally as any other
+# SBCharSetProber does, to recognize windows-1255, upon which this model was
+# built. The second SBCharSetProber is told to make the pair-of-letter
+# lookup in the language model backwards. This in practice exactly simulates
+# a visual Hebrew model using the windows-1255 logical Hebrew model.
+#
+# The HebrewProber is not using any language model. All it does is look for
+# final-letter evidence suggesting the text is either logical Hebrew or visual
+# Hebrew. Disjointed from the model probers, the results of the HebrewProber
+# alone are meaningless. HebrewProber always returns 0.00 as confidence
+# since it never identifies a charset by itself. Instead, the pointer to the
+# HebrewProber is passed to the model probers as a helper "Name Prober".
+# When the Group prober receives a positive identification from any prober,
+# it asks for the name of the charset identified. If the prober queried is a
+# Hebrew model prober, the model prober forwards the call to the
+# HebrewProber to make the final decision. In the HebrewProber, the
+# decision is made according to the final-letters scores maintained and Both
+# model probers scores. The answer is returned in the form of the name of the
+# charset identified, either "windows-1255" or "ISO-8859-8".
+
+# windows-1255 / ISO-8859-8 code points of interest
+FINAL_KAF = 0xea
+NORMAL_KAF = 0xeb
+FINAL_MEM = 0xed
+NORMAL_MEM = 0xee
+FINAL_NUN = 0xef
+NORMAL_NUN = 0xf0
+FINAL_PE = 0xf3
+NORMAL_PE = 0xf4
+FINAL_TSADI = 0xf5
+NORMAL_TSADI = 0xf6
+
+# Minimum Visual vs Logical final letter score difference.
+# If the difference is below this, don't rely solely on the final letter score
+# distance.
+MIN_FINAL_CHAR_DISTANCE = 5
+
+# Minimum Visual vs Logical model score difference.
+# If the difference is below this, don't rely at all on the model score
+# distance.
+MIN_MODEL_DISTANCE = 0.01
+
+VISUAL_HEBREW_NAME = "ISO-8859-8"
+LOGICAL_HEBREW_NAME = "windows-1255"
+
+
+class HebrewProber(CharSetProber):
+ def __init__(self):
+ CharSetProber.__init__(self)
+ self._mLogicalProber = None
+ self._mVisualProber = None
+ self.reset()
+
+ def reset(self):
+ self._mFinalCharLogicalScore = 0
+ self._mFinalCharVisualScore = 0
+ # The two last characters seen in the previous buffer,
+ # mPrev and mBeforePrev are initialized to space in order to simulate
+ # a word delimiter at the beginning of the data
+ self._mPrev = ' '
+ self._mBeforePrev = ' '
+ # These probers are owned by the group prober.
+
+ def set_model_probers(self, logicalProber, visualProber):
+ self._mLogicalProber = logicalProber
+ self._mVisualProber = visualProber
+
+ def is_final(self, c):
+ return wrap_ord(c) in [FINAL_KAF, FINAL_MEM, FINAL_NUN, FINAL_PE,
+ FINAL_TSADI]
+
+ def is_non_final(self, c):
+ # The normal Tsadi is not a good Non-Final letter due to words like
+ # 'lechotet' (to chat) containing an apostrophe after the tsadi. This
+ # apostrophe is converted to a space in FilterWithoutEnglishLetters
+ # causing the Non-Final tsadi to appear at an end of a word even
+ # though this is not the case in the original text.
+ # The letters Pe and Kaf rarely display a related behavior of not being
+ # a good Non-Final letter. Words like 'Pop', 'Winamp' and 'Mubarak'
+ # for example legally end with a Non-Final Pe or Kaf. However, the
+ # benefit of these letters as Non-Final letters outweighs the damage
+ # since these words are quite rare.
+ return wrap_ord(c) in [NORMAL_KAF, NORMAL_MEM, NORMAL_NUN, NORMAL_PE]
+
+ def feed(self, aBuf):
+ # Final letter analysis for logical-visual decision.
+ # Look for evidence that the received buffer is either logical Hebrew
+ # or visual Hebrew.
+ # The following cases are checked:
+ # 1) A word longer than 1 letter, ending with a final letter. This is
+ # an indication that the text is laid out "naturally" since the
+ # final letter really appears at the end. +1 for logical score.
+ # 2) A word longer than 1 letter, ending with a Non-Final letter. In
+ # normal Hebrew, words ending with Kaf, Mem, Nun, Pe or Tsadi,
+ # should not end with the Non-Final form of that letter. Exceptions
+ # to this rule are mentioned above in isNonFinal(). This is an
+ # indication that the text is laid out backwards. +1 for visual
+ # score
+ # 3) A word longer than 1 letter, starting with a final letter. Final
+ # letters should not appear at the beginning of a word. This is an
+ # indication that the text is laid out backwards. +1 for visual
+ # score.
+ #
+ # The visual score and logical score are accumulated throughout the
+ # text and are finally checked against each other in GetCharSetName().
+ # No checking for final letters in the middle of words is done since
+ # that case is not an indication for either Logical or Visual text.
+ #
+ # We automatically filter out all 7-bit characters (replace them with
+ # spaces) so the word boundary detection works properly. [MAP]
+
+ if self.get_state() == eNotMe:
+ # Both model probers say it's not them. No reason to continue.
+ return eNotMe
+
+ aBuf = self.filter_high_bit_only(aBuf)
+
+ for cur in aBuf:
+ if cur == ' ':
+ # We stand on a space - a word just ended
+ if self._mBeforePrev != ' ':
+ # next-to-last char was not a space so self._mPrev is not a
+ # 1 letter word
+ if self.is_final(self._mPrev):
+ # case (1) [-2:not space][-1:final letter][cur:space]
+ self._mFinalCharLogicalScore += 1
+ elif self.is_non_final(self._mPrev):
+ # case (2) [-2:not space][-1:Non-Final letter][
+ # cur:space]
+ self._mFinalCharVisualScore += 1
+ else:
+ # Not standing on a space
+ if ((self._mBeforePrev == ' ') and
+ (self.is_final(self._mPrev)) and (cur != ' ')):
+ # case (3) [-2:space][-1:final letter][cur:not space]
+ self._mFinalCharVisualScore += 1
+ self._mBeforePrev = self._mPrev
+ self._mPrev = cur
+
+ # Forever detecting, till the end or until both model probers return
+ # eNotMe (handled above)
+ return eDetecting
+
+ def get_charset_name(self):
+ # Make the decision: is it Logical or Visual?
+ # If the final letter score distance is dominant enough, rely on it.
+ finalsub = self._mFinalCharLogicalScore - self._mFinalCharVisualScore
+ if finalsub >= MIN_FINAL_CHAR_DISTANCE:
+ return LOGICAL_HEBREW_NAME
+ if finalsub <= -MIN_FINAL_CHAR_DISTANCE:
+ return VISUAL_HEBREW_NAME
+
+ # It's not dominant enough, try to rely on the model scores instead.
+ modelsub = (self._mLogicalProber.get_confidence()
+ - self._mVisualProber.get_confidence())
+ if modelsub > MIN_MODEL_DISTANCE:
+ return LOGICAL_HEBREW_NAME
+ if modelsub < -MIN_MODEL_DISTANCE:
+ return VISUAL_HEBREW_NAME
+
+ # Still no good, back to final letter distance, maybe it'll save the
+ # day.
+ if finalsub < 0.0:
+ return VISUAL_HEBREW_NAME
+
+ # (finalsub > 0 - Logical) or (don't know what to do) default to
+ # Logical.
+ return LOGICAL_HEBREW_NAME
+
+ def get_state(self):
+ # Remain active as long as any of the model probers are active.
+ if (self._mLogicalProber.get_state() == eNotMe) and \
+ (self._mVisualProber.get_state() == eNotMe):
+ return eNotMe
+ return eDetecting
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/jpcntx.py b/app/src/processing/app/i18n/python/requests/packages/charade/jpcntx.py
index b4e6af44a98..f7f69ba4cda 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/jpcntx.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/jpcntx.py
@@ -1,219 +1,219 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is Mozilla Communicator client code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 1998
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-from .compat import wrap_ord
-
-NUM_OF_CATEGORY = 6
-DONT_KNOW = -1
-ENOUGH_REL_THRESHOLD = 100
-MAX_REL_THRESHOLD = 1000
-MINIMUM_DATA_THRESHOLD = 4
-
-# This is hiragana 2-char sequence table, the number in each cell represents its frequency category
-jp2CharContext = (
-(0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1),
-(2,4,0,4,0,3,0,4,0,3,4,4,4,2,4,3,3,4,3,2,3,3,4,2,3,3,3,2,4,1,4,3,3,1,5,4,3,4,3,4,3,5,3,0,3,5,4,2,0,3,1,0,3,3,0,3,3,0,1,1,0,4,3,0,3,3,0,4,0,2,0,3,5,5,5,5,4,0,4,1,0,3,4),
-(0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2),
-(0,4,0,5,0,5,0,4,0,4,5,4,4,3,5,3,5,1,5,3,4,3,4,4,3,4,3,3,4,3,5,4,4,3,5,5,3,5,5,5,3,5,5,3,4,5,5,3,1,3,2,0,3,4,0,4,2,0,4,2,1,5,3,2,3,5,0,4,0,2,0,5,4,4,5,4,5,0,4,0,0,4,4),
-(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
-(0,3,0,4,0,3,0,3,0,4,5,4,3,3,3,3,4,3,5,4,4,3,5,4,4,3,4,3,4,4,4,4,5,3,4,4,3,4,5,5,4,5,5,1,4,5,4,3,0,3,3,1,3,3,0,4,4,0,3,3,1,5,3,3,3,5,0,4,0,3,0,4,4,3,4,3,3,0,4,1,1,3,4),
-(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
-(0,4,0,3,0,3,0,4,0,3,4,4,3,2,2,1,2,1,3,1,3,3,3,3,3,4,3,1,3,3,5,3,3,0,4,3,0,5,4,3,3,5,4,4,3,4,4,5,0,1,2,0,1,2,0,2,2,0,1,0,0,5,2,2,1,4,0,3,0,1,0,4,4,3,5,4,3,0,2,1,0,4,3),
-(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
-(0,3,0,5,0,4,0,2,1,4,4,2,4,1,4,2,4,2,4,3,3,3,4,3,3,3,3,1,4,2,3,3,3,1,4,4,1,1,1,4,3,3,2,0,2,4,3,2,0,3,3,0,3,1,1,0,0,0,3,3,0,4,2,2,3,4,0,4,0,3,0,4,4,5,3,4,4,0,3,0,0,1,4),
-(1,4,0,4,0,4,0,4,0,3,5,4,4,3,4,3,5,4,3,3,4,3,5,4,4,4,4,3,4,2,4,3,3,1,5,4,3,2,4,5,4,5,5,4,4,5,4,4,0,3,2,2,3,3,0,4,3,1,3,2,1,4,3,3,4,5,0,3,0,2,0,4,5,5,4,5,4,0,4,0,0,5,4),
-(0,5,0,5,0,4,0,3,0,4,4,3,4,3,3,3,4,0,4,4,4,3,4,3,4,3,3,1,4,2,4,3,4,0,5,4,1,4,5,4,4,5,3,2,4,3,4,3,2,4,1,3,3,3,2,3,2,0,4,3,3,4,3,3,3,4,0,4,0,3,0,4,5,4,4,4,3,0,4,1,0,1,3),
-(0,3,1,4,0,3,0,2,0,3,4,4,3,1,4,2,3,3,4,3,4,3,4,3,4,4,3,2,3,1,5,4,4,1,4,4,3,5,4,4,3,5,5,4,3,4,4,3,1,2,3,1,2,2,0,3,2,0,3,1,0,5,3,3,3,4,3,3,3,3,4,4,4,4,5,4,2,0,3,3,2,4,3),
-(0,2,0,3,0,1,0,1,0,0,3,2,0,0,2,0,1,0,2,1,3,3,3,1,2,3,1,0,1,0,4,2,1,1,3,3,0,4,3,3,1,4,3,3,0,3,3,2,0,0,0,0,1,0,0,2,0,0,0,0,0,4,1,0,2,3,2,2,2,1,3,3,3,4,4,3,2,0,3,1,0,3,3),
-(0,4,0,4,0,3,0,3,0,4,4,4,3,3,3,3,3,3,4,3,4,2,4,3,4,3,3,2,4,3,4,5,4,1,4,5,3,5,4,5,3,5,4,0,3,5,5,3,1,3,3,2,2,3,0,3,4,1,3,3,2,4,3,3,3,4,0,4,0,3,0,4,5,4,4,5,3,0,4,1,0,3,4),
-(0,2,0,3,0,3,0,0,0,2,2,2,1,0,1,0,0,0,3,0,3,0,3,0,1,3,1,0,3,1,3,3,3,1,3,3,3,0,1,3,1,3,4,0,0,3,1,1,0,3,2,0,0,0,0,1,3,0,1,0,0,3,3,2,0,3,0,0,0,0,0,3,4,3,4,3,3,0,3,0,0,2,3),
-(2,3,0,3,0,2,0,1,0,3,3,4,3,1,3,1,1,1,3,1,4,3,4,3,3,3,0,0,3,1,5,4,3,1,4,3,2,5,5,4,4,4,4,3,3,4,4,4,0,2,1,1,3,2,0,1,2,0,0,1,0,4,1,3,3,3,0,3,0,1,0,4,4,4,5,5,3,0,2,0,0,4,4),
-(0,2,0,1,0,3,1,3,0,2,3,3,3,0,3,1,0,0,3,0,3,2,3,1,3,2,1,1,0,0,4,2,1,0,2,3,1,4,3,2,0,4,4,3,1,3,1,3,0,1,0,0,1,0,0,0,1,0,0,0,0,4,1,1,1,2,0,3,0,0,0,3,4,2,4,3,2,0,1,0,0,3,3),
-(0,1,0,4,0,5,0,4,0,2,4,4,2,3,3,2,3,3,5,3,3,3,4,3,4,2,3,0,4,3,3,3,4,1,4,3,2,1,5,5,3,4,5,1,3,5,4,2,0,3,3,0,1,3,0,4,2,0,1,3,1,4,3,3,3,3,0,3,0,1,0,3,4,4,4,5,5,0,3,0,1,4,5),
-(0,2,0,3,0,3,0,0,0,2,3,1,3,0,4,0,1,1,3,0,3,4,3,2,3,1,0,3,3,2,3,1,3,0,2,3,0,2,1,4,1,2,2,0,0,3,3,0,0,2,0,0,0,1,0,0,0,0,2,2,0,3,2,1,3,3,0,2,0,2,0,0,3,3,1,2,4,0,3,0,2,2,3),
-(2,4,0,5,0,4,0,4,0,2,4,4,4,3,4,3,3,3,1,2,4,3,4,3,4,4,5,0,3,3,3,3,2,0,4,3,1,4,3,4,1,4,4,3,3,4,4,3,1,2,3,0,4,2,0,4,1,0,3,3,0,4,3,3,3,4,0,4,0,2,0,3,5,3,4,5,2,0,3,0,0,4,5),
-(0,3,0,4,0,1,0,1,0,1,3,2,2,1,3,0,3,0,2,0,2,0,3,0,2,0,0,0,1,0,1,1,0,0,3,1,0,0,0,4,0,3,1,0,2,1,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,4,2,2,3,1,0,3,0,0,0,1,4,4,4,3,0,0,4,0,0,1,4),
-(1,4,1,5,0,3,0,3,0,4,5,4,4,3,5,3,3,4,4,3,4,1,3,3,3,3,2,1,4,1,5,4,3,1,4,4,3,5,4,4,3,5,4,3,3,4,4,4,0,3,3,1,2,3,0,3,1,0,3,3,0,5,4,4,4,4,4,4,3,3,5,4,4,3,3,5,4,0,3,2,0,4,4),
-(0,2,0,3,0,1,0,0,0,1,3,3,3,2,4,1,3,0,3,1,3,0,2,2,1,1,0,0,2,0,4,3,1,0,4,3,0,4,4,4,1,4,3,1,1,3,3,1,0,2,0,0,1,3,0,0,0,0,2,0,0,4,3,2,4,3,5,4,3,3,3,4,3,3,4,3,3,0,2,1,0,3,3),
-(0,2,0,4,0,3,0,2,0,2,5,5,3,4,4,4,4,1,4,3,3,0,4,3,4,3,1,3,3,2,4,3,0,3,4,3,0,3,4,4,2,4,4,0,4,5,3,3,2,2,1,1,1,2,0,1,5,0,3,3,2,4,3,3,3,4,0,3,0,2,0,4,4,3,5,5,0,0,3,0,2,3,3),
-(0,3,0,4,0,3,0,1,0,3,4,3,3,1,3,3,3,0,3,1,3,0,4,3,3,1,1,0,3,0,3,3,0,0,4,4,0,1,5,4,3,3,5,0,3,3,4,3,0,2,0,1,1,1,0,1,3,0,1,2,1,3,3,2,3,3,0,3,0,1,0,1,3,3,4,4,1,0,1,2,2,1,3),
-(0,1,0,4,0,4,0,3,0,1,3,3,3,2,3,1,1,0,3,0,3,3,4,3,2,4,2,0,1,0,4,3,2,0,4,3,0,5,3,3,2,4,4,4,3,3,3,4,0,1,3,0,0,1,0,0,1,0,0,0,0,4,2,3,3,3,0,3,0,0,0,4,4,4,5,3,2,0,3,3,0,3,5),
-(0,2,0,3,0,0,0,3,0,1,3,0,2,0,0,0,1,0,3,1,1,3,3,0,0,3,0,0,3,0,2,3,1,0,3,1,0,3,3,2,0,4,2,2,0,2,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,1,2,0,1,0,1,0,0,0,1,3,1,2,0,0,0,1,0,0,1,4),
-(0,3,0,3,0,5,0,1,0,2,4,3,1,3,3,2,1,1,5,2,1,0,5,1,2,0,0,0,3,3,2,2,3,2,4,3,0,0,3,3,1,3,3,0,2,5,3,4,0,3,3,0,1,2,0,2,2,0,3,2,0,2,2,3,3,3,0,2,0,1,0,3,4,4,2,5,4,0,3,0,0,3,5),
-(0,3,0,3,0,3,0,1,0,3,3,3,3,0,3,0,2,0,2,1,1,0,2,0,1,0,0,0,2,1,0,0,1,0,3,2,0,0,3,3,1,2,3,1,0,3,3,0,0,1,0,0,0,0,0,2,0,0,0,0,0,2,3,1,2,3,0,3,0,1,0,3,2,1,0,4,3,0,1,1,0,3,3),
-(0,4,0,5,0,3,0,3,0,4,5,5,4,3,5,3,4,3,5,3,3,2,5,3,4,4,4,3,4,3,4,5,5,3,4,4,3,4,4,5,4,4,4,3,4,5,5,4,2,3,4,2,3,4,0,3,3,1,4,3,2,4,3,3,5,5,0,3,0,3,0,5,5,5,5,4,4,0,4,0,1,4,4),
-(0,4,0,4,0,3,0,3,0,3,5,4,4,2,3,2,5,1,3,2,5,1,4,2,3,2,3,3,4,3,3,3,3,2,5,4,1,3,3,5,3,4,4,0,4,4,3,1,1,3,1,0,2,3,0,2,3,0,3,0,0,4,3,1,3,4,0,3,0,2,0,4,4,4,3,4,5,0,4,0,0,3,4),
-(0,3,0,3,0,3,1,2,0,3,4,4,3,3,3,0,2,2,4,3,3,1,3,3,3,1,1,0,3,1,4,3,2,3,4,4,2,4,4,4,3,4,4,3,2,4,4,3,1,3,3,1,3,3,0,4,1,0,2,2,1,4,3,2,3,3,5,4,3,3,5,4,4,3,3,0,4,0,3,2,2,4,4),
-(0,2,0,1,0,0,0,0,0,1,2,1,3,0,0,0,0,0,2,0,1,2,1,0,0,1,0,0,0,0,3,0,0,1,0,1,1,3,1,0,0,0,1,1,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1,1,2,2,0,3,4,0,0,0,1,1,0,0,1,0,0,0,0,0,1,1),
-(0,1,0,0,0,1,0,0,0,0,4,0,4,1,4,0,3,0,4,0,3,0,4,0,3,0,3,0,4,1,5,1,4,0,0,3,0,5,0,5,2,0,1,0,0,0,2,1,4,0,1,3,0,0,3,0,0,3,1,1,4,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0),
-(1,4,0,5,0,3,0,2,0,3,5,4,4,3,4,3,5,3,4,3,3,0,4,3,3,3,3,3,3,2,4,4,3,1,3,4,4,5,4,4,3,4,4,1,3,5,4,3,3,3,1,2,2,3,3,1,3,1,3,3,3,5,3,3,4,5,0,3,0,3,0,3,4,3,4,4,3,0,3,0,2,4,3),
-(0,1,0,4,0,0,0,0,0,1,4,0,4,1,4,2,4,0,3,0,1,0,1,0,0,0,0,0,2,0,3,1,1,1,0,3,0,0,0,1,2,1,0,0,1,1,1,1,0,1,0,0,0,1,0,0,3,0,0,0,0,3,2,0,2,2,0,1,0,0,0,2,3,2,3,3,0,0,0,0,2,1,0),
-(0,5,1,5,0,3,0,3,0,5,4,4,5,1,5,3,3,0,4,3,4,3,5,3,4,3,3,2,4,3,4,3,3,0,3,3,1,4,4,3,4,4,4,3,4,5,5,3,2,3,1,1,3,3,1,3,1,1,3,3,2,4,5,3,3,5,0,4,0,3,0,4,4,3,5,3,3,0,3,4,0,4,3),
-(0,5,0,5,0,3,0,2,0,4,4,3,5,2,4,3,3,3,4,4,4,3,5,3,5,3,3,1,4,0,4,3,3,0,3,3,0,4,4,4,4,5,4,3,3,5,5,3,2,3,1,2,3,2,0,1,0,0,3,2,2,4,4,3,1,5,0,4,0,3,0,4,3,1,3,2,1,0,3,3,0,3,3),
-(0,4,0,5,0,5,0,4,0,4,5,5,5,3,4,3,3,2,5,4,4,3,5,3,5,3,4,0,4,3,4,4,3,2,4,4,3,4,5,4,4,5,5,0,3,5,5,4,1,3,3,2,3,3,1,3,1,0,4,3,1,4,4,3,4,5,0,4,0,2,0,4,3,4,4,3,3,0,4,0,0,5,5),
-(0,4,0,4,0,5,0,1,1,3,3,4,4,3,4,1,3,0,5,1,3,0,3,1,3,1,1,0,3,0,3,3,4,0,4,3,0,4,4,4,3,4,4,0,3,5,4,1,0,3,0,0,2,3,0,3,1,0,3,1,0,3,2,1,3,5,0,3,0,1,0,3,2,3,3,4,4,0,2,2,0,4,4),
-(2,4,0,5,0,4,0,3,0,4,5,5,4,3,5,3,5,3,5,3,5,2,5,3,4,3,3,4,3,4,5,3,2,1,5,4,3,2,3,4,5,3,4,1,2,5,4,3,0,3,3,0,3,2,0,2,3,0,4,1,0,3,4,3,3,5,0,3,0,1,0,4,5,5,5,4,3,0,4,2,0,3,5),
-(0,5,0,4,0,4,0,2,0,5,4,3,4,3,4,3,3,3,4,3,4,2,5,3,5,3,4,1,4,3,4,4,4,0,3,5,0,4,4,4,4,5,3,1,3,4,5,3,3,3,3,3,3,3,0,2,2,0,3,3,2,4,3,3,3,5,3,4,1,3,3,5,3,2,0,0,0,0,4,3,1,3,3),
-(0,1,0,3,0,3,0,1,0,1,3,3,3,2,3,3,3,0,3,0,0,0,3,1,3,0,0,0,2,2,2,3,0,0,3,2,0,1,2,4,1,3,3,0,0,3,3,3,0,1,0,0,2,1,0,0,3,0,3,1,0,3,0,0,1,3,0,2,0,1,0,3,3,1,3,3,0,0,1,1,0,3,3),
-(0,2,0,3,0,2,1,4,0,2,2,3,1,1,3,1,1,0,2,0,3,1,2,3,1,3,0,0,1,0,4,3,2,3,3,3,1,4,2,3,3,3,3,1,0,3,1,4,0,1,1,0,1,2,0,1,1,0,1,1,0,3,1,3,2,2,0,1,0,0,0,2,3,3,3,1,0,0,0,0,0,2,3),
-(0,5,0,4,0,5,0,2,0,4,5,5,3,3,4,3,3,1,5,4,4,2,4,4,4,3,4,2,4,3,5,5,4,3,3,4,3,3,5,5,4,5,5,1,3,4,5,3,1,4,3,1,3,3,0,3,3,1,4,3,1,4,5,3,3,5,0,4,0,3,0,5,3,3,1,4,3,0,4,0,1,5,3),
-(0,5,0,5,0,4,0,2,0,4,4,3,4,3,3,3,3,3,5,4,4,4,4,4,4,5,3,3,5,2,4,4,4,3,4,4,3,3,4,4,5,5,3,3,4,3,4,3,3,4,3,3,3,3,1,2,2,1,4,3,3,5,4,4,3,4,0,4,0,3,0,4,4,4,4,4,1,0,4,2,0,2,4),
-(0,4,0,4,0,3,0,1,0,3,5,2,3,0,3,0,2,1,4,2,3,3,4,1,4,3,3,2,4,1,3,3,3,0,3,3,0,0,3,3,3,5,3,3,3,3,3,2,0,2,0,0,2,0,0,2,0,0,1,0,0,3,1,2,2,3,0,3,0,2,0,4,4,3,3,4,1,0,3,0,0,2,4),
-(0,0,0,4,0,0,0,0,0,0,1,0,1,0,2,0,0,0,0,0,1,0,2,0,1,0,0,0,0,0,3,1,3,0,3,2,0,0,0,1,0,3,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,0,2,0,0,0,0,0,0,2),
-(0,2,1,3,0,2,0,2,0,3,3,3,3,1,3,1,3,3,3,3,3,3,4,2,2,1,2,1,4,0,4,3,1,3,3,3,2,4,3,5,4,3,3,3,3,3,3,3,0,1,3,0,2,0,0,1,0,0,1,0,0,4,2,0,2,3,0,3,3,0,3,3,4,2,3,1,4,0,1,2,0,2,3),
-(0,3,0,3,0,1,0,3,0,2,3,3,3,0,3,1,2,0,3,3,2,3,3,2,3,2,3,1,3,0,4,3,2,0,3,3,1,4,3,3,2,3,4,3,1,3,3,1,1,0,1,1,0,1,0,1,0,1,0,0,0,4,1,1,0,3,0,3,1,0,2,3,3,3,3,3,1,0,0,2,0,3,3),
-(0,0,0,0,0,0,0,0,0,0,3,0,2,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,3,0,3,1,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,2,0,2,3,0,0,0,0,0,0,0,0,3),
-(0,2,0,3,1,3,0,3,0,2,3,3,3,1,3,1,3,1,3,1,3,3,3,1,3,0,2,3,1,1,4,3,3,2,3,3,1,2,2,4,1,3,3,0,1,4,2,3,0,1,3,0,3,0,0,1,3,0,2,0,0,3,3,2,1,3,0,3,0,2,0,3,4,4,4,3,1,0,3,0,0,3,3),
-(0,2,0,1,0,2,0,0,0,1,3,2,2,1,3,0,1,1,3,0,3,2,3,1,2,0,2,0,1,1,3,3,3,0,3,3,1,1,2,3,2,3,3,1,2,3,2,0,0,1,0,0,0,0,0,0,3,0,1,0,0,2,1,2,1,3,0,3,0,0,0,3,4,4,4,3,2,0,2,0,0,2,4),
-(0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,2,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,3,1,0,0,0,0,0,0,0,3),
-(0,3,0,3,0,2,0,3,0,3,3,3,2,3,2,2,2,0,3,1,3,3,3,2,3,3,0,0,3,0,3,2,2,0,2,3,1,4,3,4,3,3,2,3,1,5,4,4,0,3,1,2,1,3,0,3,1,1,2,0,2,3,1,3,1,3,0,3,0,1,0,3,3,4,4,2,1,0,2,1,0,2,4),
-(0,1,0,3,0,1,0,2,0,1,4,2,5,1,4,0,2,0,2,1,3,1,4,0,2,1,0,0,2,1,4,1,1,0,3,3,0,5,1,3,2,3,3,1,0,3,2,3,0,1,0,0,0,0,0,0,1,0,0,0,0,4,0,1,0,3,0,2,0,1,0,3,3,3,4,3,3,0,0,0,0,2,3),
-(0,0,0,1,0,0,0,0,0,0,2,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,0,1,0,0,0,0,0,3),
-(0,1,0,3,0,4,0,3,0,2,4,3,1,0,3,2,2,1,3,1,2,2,3,1,1,1,2,1,3,0,1,2,0,1,3,2,1,3,0,5,5,1,0,0,1,3,2,1,0,3,0,0,1,0,0,0,0,0,3,4,0,1,1,1,3,2,0,2,0,1,0,2,3,3,1,2,3,0,1,0,1,0,4),
-(0,0,0,1,0,3,0,3,0,2,2,1,0,0,4,0,3,0,3,1,3,0,3,0,3,0,1,0,3,0,3,1,3,0,3,3,0,0,1,2,1,1,1,0,1,2,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,2,2,1,2,0,0,2,0,0,0,0,2,3,3,3,3,0,0,0,0,1,4),
-(0,0,0,3,0,3,0,0,0,0,3,1,1,0,3,0,1,0,2,0,1,0,0,0,0,0,0,0,1,0,3,0,2,0,2,3,0,0,2,2,3,1,2,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,2,0,0,0,0,2,3),
-(2,4,0,5,0,5,0,4,0,3,4,3,3,3,4,3,3,3,4,3,4,4,5,4,5,5,5,2,3,0,5,5,4,1,5,4,3,1,5,4,3,4,4,3,3,4,3,3,0,3,2,0,2,3,0,3,0,0,3,3,0,5,3,2,3,3,0,3,0,3,0,3,4,5,4,5,3,0,4,3,0,3,4),
-(0,3,0,3,0,3,0,3,0,3,3,4,3,2,3,2,3,0,4,3,3,3,3,3,3,3,3,0,3,2,4,3,3,1,3,4,3,4,4,4,3,4,4,3,2,4,4,1,0,2,0,0,1,1,0,2,0,0,3,1,0,5,3,2,1,3,0,3,0,1,2,4,3,2,4,3,3,0,3,2,0,4,4),
-(0,3,0,3,0,1,0,0,0,1,4,3,3,2,3,1,3,1,4,2,3,2,4,2,3,4,3,0,2,2,3,3,3,0,3,3,3,0,3,4,1,3,3,0,3,4,3,3,0,1,1,0,1,0,0,0,4,0,3,0,0,3,1,2,1,3,0,4,0,1,0,4,3,3,4,3,3,0,2,0,0,3,3),
-(0,3,0,4,0,1,0,3,0,3,4,3,3,0,3,3,3,1,3,1,3,3,4,3,3,3,0,0,3,1,5,3,3,1,3,3,2,5,4,3,3,4,5,3,2,5,3,4,0,1,0,0,0,0,0,2,0,0,1,1,0,4,2,2,1,3,0,3,0,2,0,4,4,3,5,3,2,0,1,1,0,3,4),
-(0,5,0,4,0,5,0,2,0,4,4,3,3,2,3,3,3,1,4,3,4,1,5,3,4,3,4,0,4,2,4,3,4,1,5,4,0,4,4,4,4,5,4,1,3,5,4,2,1,4,1,1,3,2,0,3,1,0,3,2,1,4,3,3,3,4,0,4,0,3,0,4,4,4,3,3,3,0,4,2,0,3,4),
-(1,4,0,4,0,3,0,1,0,3,3,3,1,1,3,3,2,2,3,3,1,0,3,2,2,1,2,0,3,1,2,1,2,0,3,2,0,2,2,3,3,4,3,0,3,3,1,2,0,1,1,3,1,2,0,0,3,0,1,1,0,3,2,2,3,3,0,3,0,0,0,2,3,3,4,3,3,0,1,0,0,1,4),
-(0,4,0,4,0,4,0,0,0,3,4,4,3,1,4,2,3,2,3,3,3,1,4,3,4,0,3,0,4,2,3,3,2,2,5,4,2,1,3,4,3,4,3,1,3,3,4,2,0,2,1,0,3,3,0,0,2,0,3,1,0,4,4,3,4,3,0,4,0,1,0,2,4,4,4,4,4,0,3,2,0,3,3),
-(0,0,0,1,0,4,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,3,2,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,2),
-(0,2,0,3,0,4,0,4,0,1,3,3,3,0,4,0,2,1,2,1,1,1,2,0,3,1,1,0,1,0,3,1,0,0,3,3,2,0,1,1,0,0,0,0,0,1,0,2,0,2,2,0,3,1,0,0,1,0,1,1,0,1,2,0,3,0,0,0,0,1,0,0,3,3,4,3,1,0,1,0,3,0,2),
-(0,0,0,3,0,5,0,0,0,0,1,0,2,0,3,1,0,1,3,0,0,0,2,0,0,0,1,0,0,0,1,1,0,0,4,0,0,0,2,3,0,1,4,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,3,0,0,0,0,0,3),
-(0,2,0,5,0,5,0,1,0,2,4,3,3,2,5,1,3,2,3,3,3,0,4,1,2,0,3,0,4,0,2,2,1,1,5,3,0,0,1,4,2,3,2,0,3,3,3,2,0,2,4,1,1,2,0,1,1,0,3,1,0,1,3,1,2,3,0,2,0,0,0,1,3,5,4,4,4,0,3,0,0,1,3),
-(0,4,0,5,0,4,0,4,0,4,5,4,3,3,4,3,3,3,4,3,4,4,5,3,4,5,4,2,4,2,3,4,3,1,4,4,1,3,5,4,4,5,5,4,4,5,5,5,2,3,3,1,4,3,1,3,3,0,3,3,1,4,3,4,4,4,0,3,0,4,0,3,3,4,4,5,0,0,4,3,0,4,5),
-(0,4,0,4,0,3,0,3,0,3,4,4,4,3,3,2,4,3,4,3,4,3,5,3,4,3,2,1,4,2,4,4,3,1,3,4,2,4,5,5,3,4,5,4,1,5,4,3,0,3,2,2,3,2,1,3,1,0,3,3,3,5,3,3,3,5,4,4,2,3,3,4,3,3,3,2,1,0,3,2,1,4,3),
-(0,4,0,5,0,4,0,3,0,3,5,5,3,2,4,3,4,0,5,4,4,1,4,4,4,3,3,3,4,3,5,5,2,3,3,4,1,2,5,5,3,5,5,2,3,5,5,4,0,3,2,0,3,3,1,1,5,1,4,1,0,4,3,2,3,5,0,4,0,3,0,5,4,3,4,3,0,0,4,1,0,4,4),
-(1,3,0,4,0,2,0,2,0,2,5,5,3,3,3,3,3,0,4,2,3,4,4,4,3,4,0,0,3,4,5,4,3,3,3,3,2,5,5,4,5,5,5,4,3,5,5,5,1,3,1,0,1,0,0,3,2,0,4,2,0,5,2,3,2,4,1,3,0,3,0,4,5,4,5,4,3,0,4,2,0,5,4),
-(0,3,0,4,0,5,0,3,0,3,4,4,3,2,3,2,3,3,3,3,3,2,4,3,3,2,2,0,3,3,3,3,3,1,3,3,3,0,4,4,3,4,4,1,1,4,4,2,0,3,1,0,1,1,0,4,1,0,2,3,1,3,3,1,3,4,0,3,0,1,0,3,1,3,0,0,1,0,2,0,0,4,4),
-(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
-(0,3,0,3,0,2,0,3,0,1,5,4,3,3,3,1,4,2,1,2,3,4,4,2,4,4,5,0,3,1,4,3,4,0,4,3,3,3,2,3,2,5,3,4,3,2,2,3,0,0,3,0,2,1,0,1,2,0,0,0,0,2,1,1,3,1,0,2,0,4,0,3,4,4,4,5,2,0,2,0,0,1,3),
-(0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,0,0,1,1,0,0,0,4,2,1,1,0,1,0,3,2,0,0,3,1,1,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,1,0,0,0,2,0,0,0,1,4,0,4,2,1,0,0,0,0,0,1),
-(0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,3,1,0,0,0,2,0,2,1,0,0,1,2,1,0,1,1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,1,3,1,0,0,0,0,0,1,0,0,2,1,0,0,0,0,0,0,0,0,2),
-(0,4,0,4,0,4,0,3,0,4,4,3,4,2,4,3,2,0,4,4,4,3,5,3,5,3,3,2,4,2,4,3,4,3,1,4,0,2,3,4,4,4,3,3,3,4,4,4,3,4,1,3,4,3,2,1,2,1,3,3,3,4,4,3,3,5,0,4,0,3,0,4,3,3,3,2,1,0,3,0,0,3,3),
-(0,4,0,3,0,3,0,3,0,3,5,5,3,3,3,3,4,3,4,3,3,3,4,4,4,3,3,3,3,4,3,5,3,3,1,3,2,4,5,5,5,5,4,3,4,5,5,3,2,2,3,3,3,3,2,3,3,1,2,3,2,4,3,3,3,4,0,4,0,2,0,4,3,2,2,1,2,0,3,0,0,4,1),
-)
-
-class JapaneseContextAnalysis:
- def __init__(self):
- self.reset()
-
- def reset(self):
- self._mTotalRel = 0 # total sequence received
- # category counters, each interger counts sequence in its category
- self._mRelSample = [0] * NUM_OF_CATEGORY
- # if last byte in current buffer is not the last byte of a character,
- # we need to know how many bytes to skip in next buffer
- self._mNeedToSkipCharNum = 0
- self._mLastCharOrder = -1 # The order of previous char
- # If this flag is set to True, detection is done and conclusion has
- # been made
- self._mDone = False
-
- def feed(self, aBuf, aLen):
- if self._mDone:
- return
-
- # The buffer we got is byte oriented, and a character may span in more than one
- # buffers. In case the last one or two byte in last buffer is not
- # complete, we record how many byte needed to complete that character
- # and skip these bytes here. We can choose to record those bytes as
- # well and analyse the character once it is complete, but since a
- # character will not make much difference, by simply skipping
- # this character will simply our logic and improve performance.
- i = self._mNeedToSkipCharNum
- while i < aLen:
- order, charLen = self.get_order(aBuf[i:i + 2])
- i += charLen
- if i > aLen:
- self._mNeedToSkipCharNum = i - aLen
- self._mLastCharOrder = -1
- else:
- if (order != -1) and (self._mLastCharOrder != -1):
- self._mTotalRel += 1
- if self._mTotalRel > MAX_REL_THRESHOLD:
- self._mDone = True
- break
- self._mRelSample[jp2CharContext[self._mLastCharOrder][order]] += 1
- self._mLastCharOrder = order
-
- def got_enough_data(self):
- return self._mTotalRel > ENOUGH_REL_THRESHOLD
-
- def get_confidence(self):
- # This is just one way to calculate confidence. It works well for me.
- if self._mTotalRel > MINIMUM_DATA_THRESHOLD:
- return (self._mTotalRel - self._mRelSample[0]) / self._mTotalRel
- else:
- return DONT_KNOW
-
- def get_order(self, aBuf):
- return -1, 1
-
-class SJISContextAnalysis(JapaneseContextAnalysis):
- def get_order(self, aBuf):
- if not aBuf:
- return -1, 1
- # find out current char's byte length
- first_char = wrap_ord(aBuf[0])
- if ((0x81 <= first_char <= 0x9F) or (0xE0 <= first_char <= 0xFC)):
- charLen = 2
- else:
- charLen = 1
-
- # return its order if it is hiragana
- if len(aBuf) > 1:
- second_char = wrap_ord(aBuf[1])
- if (first_char == 202) and (0x9F <= second_char <= 0xF1):
- return second_char - 0x9F, charLen
-
- return -1, charLen
-
-class EUCJPContextAnalysis(JapaneseContextAnalysis):
- def get_order(self, aBuf):
- if not aBuf:
- return -1, 1
- # find out current char's byte length
- first_char = wrap_ord(aBuf[0])
- if (first_char == 0x8E) or (0xA1 <= first_char <= 0xFE):
- charLen = 2
- elif first_char == 0x8F:
- charLen = 3
- else:
- charLen = 1
-
- # return its order if it is hiragana
- if len(aBuf) > 1:
- second_char = wrap_ord(aBuf[1])
- if (first_char == 0xA4) and (0xA1 <= second_char <= 0xF3):
- return second_char - 0xA1, charLen
-
- return -1, charLen
-
-# flake8: noqa
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is Mozilla Communicator client code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+from .compat import wrap_ord
+
+NUM_OF_CATEGORY = 6
+DONT_KNOW = -1
+ENOUGH_REL_THRESHOLD = 100
+MAX_REL_THRESHOLD = 1000
+MINIMUM_DATA_THRESHOLD = 4
+
+# This is hiragana 2-char sequence table, the number in each cell represents its frequency category
+jp2CharContext = (
+(0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1),
+(2,4,0,4,0,3,0,4,0,3,4,4,4,2,4,3,3,4,3,2,3,3,4,2,3,3,3,2,4,1,4,3,3,1,5,4,3,4,3,4,3,5,3,0,3,5,4,2,0,3,1,0,3,3,0,3,3,0,1,1,0,4,3,0,3,3,0,4,0,2,0,3,5,5,5,5,4,0,4,1,0,3,4),
+(0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2),
+(0,4,0,5,0,5,0,4,0,4,5,4,4,3,5,3,5,1,5,3,4,3,4,4,3,4,3,3,4,3,5,4,4,3,5,5,3,5,5,5,3,5,5,3,4,5,5,3,1,3,2,0,3,4,0,4,2,0,4,2,1,5,3,2,3,5,0,4,0,2,0,5,4,4,5,4,5,0,4,0,0,4,4),
+(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
+(0,3,0,4,0,3,0,3,0,4,5,4,3,3,3,3,4,3,5,4,4,3,5,4,4,3,4,3,4,4,4,4,5,3,4,4,3,4,5,5,4,5,5,1,4,5,4,3,0,3,3,1,3,3,0,4,4,0,3,3,1,5,3,3,3,5,0,4,0,3,0,4,4,3,4,3,3,0,4,1,1,3,4),
+(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
+(0,4,0,3,0,3,0,4,0,3,4,4,3,2,2,1,2,1,3,1,3,3,3,3,3,4,3,1,3,3,5,3,3,0,4,3,0,5,4,3,3,5,4,4,3,4,4,5,0,1,2,0,1,2,0,2,2,0,1,0,0,5,2,2,1,4,0,3,0,1,0,4,4,3,5,4,3,0,2,1,0,4,3),
+(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
+(0,3,0,5,0,4,0,2,1,4,4,2,4,1,4,2,4,2,4,3,3,3,4,3,3,3,3,1,4,2,3,3,3,1,4,4,1,1,1,4,3,3,2,0,2,4,3,2,0,3,3,0,3,1,1,0,0,0,3,3,0,4,2,2,3,4,0,4,0,3,0,4,4,5,3,4,4,0,3,0,0,1,4),
+(1,4,0,4,0,4,0,4,0,3,5,4,4,3,4,3,5,4,3,3,4,3,5,4,4,4,4,3,4,2,4,3,3,1,5,4,3,2,4,5,4,5,5,4,4,5,4,4,0,3,2,2,3,3,0,4,3,1,3,2,1,4,3,3,4,5,0,3,0,2,0,4,5,5,4,5,4,0,4,0,0,5,4),
+(0,5,0,5,0,4,0,3,0,4,4,3,4,3,3,3,4,0,4,4,4,3,4,3,4,3,3,1,4,2,4,3,4,0,5,4,1,4,5,4,4,5,3,2,4,3,4,3,2,4,1,3,3,3,2,3,2,0,4,3,3,4,3,3,3,4,0,4,0,3,0,4,5,4,4,4,3,0,4,1,0,1,3),
+(0,3,1,4,0,3,0,2,0,3,4,4,3,1,4,2,3,3,4,3,4,3,4,3,4,4,3,2,3,1,5,4,4,1,4,4,3,5,4,4,3,5,5,4,3,4,4,3,1,2,3,1,2,2,0,3,2,0,3,1,0,5,3,3,3,4,3,3,3,3,4,4,4,4,5,4,2,0,3,3,2,4,3),
+(0,2,0,3,0,1,0,1,0,0,3,2,0,0,2,0,1,0,2,1,3,3,3,1,2,3,1,0,1,0,4,2,1,1,3,3,0,4,3,3,1,4,3,3,0,3,3,2,0,0,0,0,1,0,0,2,0,0,0,0,0,4,1,0,2,3,2,2,2,1,3,3,3,4,4,3,2,0,3,1,0,3,3),
+(0,4,0,4,0,3,0,3,0,4,4,4,3,3,3,3,3,3,4,3,4,2,4,3,4,3,3,2,4,3,4,5,4,1,4,5,3,5,4,5,3,5,4,0,3,5,5,3,1,3,3,2,2,3,0,3,4,1,3,3,2,4,3,3,3,4,0,4,0,3,0,4,5,4,4,5,3,0,4,1,0,3,4),
+(0,2,0,3,0,3,0,0,0,2,2,2,1,0,1,0,0,0,3,0,3,0,3,0,1,3,1,0,3,1,3,3,3,1,3,3,3,0,1,3,1,3,4,0,0,3,1,1,0,3,2,0,0,0,0,1,3,0,1,0,0,3,3,2,0,3,0,0,0,0,0,3,4,3,4,3,3,0,3,0,0,2,3),
+(2,3,0,3,0,2,0,1,0,3,3,4,3,1,3,1,1,1,3,1,4,3,4,3,3,3,0,0,3,1,5,4,3,1,4,3,2,5,5,4,4,4,4,3,3,4,4,4,0,2,1,1,3,2,0,1,2,0,0,1,0,4,1,3,3,3,0,3,0,1,0,4,4,4,5,5,3,0,2,0,0,4,4),
+(0,2,0,1,0,3,1,3,0,2,3,3,3,0,3,1,0,0,3,0,3,2,3,1,3,2,1,1,0,0,4,2,1,0,2,3,1,4,3,2,0,4,4,3,1,3,1,3,0,1,0,0,1,0,0,0,1,0,0,0,0,4,1,1,1,2,0,3,0,0,0,3,4,2,4,3,2,0,1,0,0,3,3),
+(0,1,0,4,0,5,0,4,0,2,4,4,2,3,3,2,3,3,5,3,3,3,4,3,4,2,3,0,4,3,3,3,4,1,4,3,2,1,5,5,3,4,5,1,3,5,4,2,0,3,3,0,1,3,0,4,2,0,1,3,1,4,3,3,3,3,0,3,0,1,0,3,4,4,4,5,5,0,3,0,1,4,5),
+(0,2,0,3,0,3,0,0,0,2,3,1,3,0,4,0,1,1,3,0,3,4,3,2,3,1,0,3,3,2,3,1,3,0,2,3,0,2,1,4,1,2,2,0,0,3,3,0,0,2,0,0,0,1,0,0,0,0,2,2,0,3,2,1,3,3,0,2,0,2,0,0,3,3,1,2,4,0,3,0,2,2,3),
+(2,4,0,5,0,4,0,4,0,2,4,4,4,3,4,3,3,3,1,2,4,3,4,3,4,4,5,0,3,3,3,3,2,0,4,3,1,4,3,4,1,4,4,3,3,4,4,3,1,2,3,0,4,2,0,4,1,0,3,3,0,4,3,3,3,4,0,4,0,2,0,3,5,3,4,5,2,0,3,0,0,4,5),
+(0,3,0,4,0,1,0,1,0,1,3,2,2,1,3,0,3,0,2,0,2,0,3,0,2,0,0,0,1,0,1,1,0,0,3,1,0,0,0,4,0,3,1,0,2,1,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,4,2,2,3,1,0,3,0,0,0,1,4,4,4,3,0,0,4,0,0,1,4),
+(1,4,1,5,0,3,0,3,0,4,5,4,4,3,5,3,3,4,4,3,4,1,3,3,3,3,2,1,4,1,5,4,3,1,4,4,3,5,4,4,3,5,4,3,3,4,4,4,0,3,3,1,2,3,0,3,1,0,3,3,0,5,4,4,4,4,4,4,3,3,5,4,4,3,3,5,4,0,3,2,0,4,4),
+(0,2,0,3,0,1,0,0,0,1,3,3,3,2,4,1,3,0,3,1,3,0,2,2,1,1,0,0,2,0,4,3,1,0,4,3,0,4,4,4,1,4,3,1,1,3,3,1,0,2,0,0,1,3,0,0,0,0,2,0,0,4,3,2,4,3,5,4,3,3,3,4,3,3,4,3,3,0,2,1,0,3,3),
+(0,2,0,4,0,3,0,2,0,2,5,5,3,4,4,4,4,1,4,3,3,0,4,3,4,3,1,3,3,2,4,3,0,3,4,3,0,3,4,4,2,4,4,0,4,5,3,3,2,2,1,1,1,2,0,1,5,0,3,3,2,4,3,3,3,4,0,3,0,2,0,4,4,3,5,5,0,0,3,0,2,3,3),
+(0,3,0,4,0,3,0,1,0,3,4,3,3,1,3,3,3,0,3,1,3,0,4,3,3,1,1,0,3,0,3,3,0,0,4,4,0,1,5,4,3,3,5,0,3,3,4,3,0,2,0,1,1,1,0,1,3,0,1,2,1,3,3,2,3,3,0,3,0,1,0,1,3,3,4,4,1,0,1,2,2,1,3),
+(0,1,0,4,0,4,0,3,0,1,3,3,3,2,3,1,1,0,3,0,3,3,4,3,2,4,2,0,1,0,4,3,2,0,4,3,0,5,3,3,2,4,4,4,3,3,3,4,0,1,3,0,0,1,0,0,1,0,0,0,0,4,2,3,3,3,0,3,0,0,0,4,4,4,5,3,2,0,3,3,0,3,5),
+(0,2,0,3,0,0,0,3,0,1,3,0,2,0,0,0,1,0,3,1,1,3,3,0,0,3,0,0,3,0,2,3,1,0,3,1,0,3,3,2,0,4,2,2,0,2,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,1,2,0,1,0,1,0,0,0,1,3,1,2,0,0,0,1,0,0,1,4),
+(0,3,0,3,0,5,0,1,0,2,4,3,1,3,3,2,1,1,5,2,1,0,5,1,2,0,0,0,3,3,2,2,3,2,4,3,0,0,3,3,1,3,3,0,2,5,3,4,0,3,3,0,1,2,0,2,2,0,3,2,0,2,2,3,3,3,0,2,0,1,0,3,4,4,2,5,4,0,3,0,0,3,5),
+(0,3,0,3,0,3,0,1,0,3,3,3,3,0,3,0,2,0,2,1,1,0,2,0,1,0,0,0,2,1,0,0,1,0,3,2,0,0,3,3,1,2,3,1,0,3,3,0,0,1,0,0,0,0,0,2,0,0,0,0,0,2,3,1,2,3,0,3,0,1,0,3,2,1,0,4,3,0,1,1,0,3,3),
+(0,4,0,5,0,3,0,3,0,4,5,5,4,3,5,3,4,3,5,3,3,2,5,3,4,4,4,3,4,3,4,5,5,3,4,4,3,4,4,5,4,4,4,3,4,5,5,4,2,3,4,2,3,4,0,3,3,1,4,3,2,4,3,3,5,5,0,3,0,3,0,5,5,5,5,4,4,0,4,0,1,4,4),
+(0,4,0,4,0,3,0,3,0,3,5,4,4,2,3,2,5,1,3,2,5,1,4,2,3,2,3,3,4,3,3,3,3,2,5,4,1,3,3,5,3,4,4,0,4,4,3,1,1,3,1,0,2,3,0,2,3,0,3,0,0,4,3,1,3,4,0,3,0,2,0,4,4,4,3,4,5,0,4,0,0,3,4),
+(0,3,0,3,0,3,1,2,0,3,4,4,3,3,3,0,2,2,4,3,3,1,3,3,3,1,1,0,3,1,4,3,2,3,4,4,2,4,4,4,3,4,4,3,2,4,4,3,1,3,3,1,3,3,0,4,1,0,2,2,1,4,3,2,3,3,5,4,3,3,5,4,4,3,3,0,4,0,3,2,2,4,4),
+(0,2,0,1,0,0,0,0,0,1,2,1,3,0,0,0,0,0,2,0,1,2,1,0,0,1,0,0,0,0,3,0,0,1,0,1,1,3,1,0,0,0,1,1,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1,1,2,2,0,3,4,0,0,0,1,1,0,0,1,0,0,0,0,0,1,1),
+(0,1,0,0,0,1,0,0,0,0,4,0,4,1,4,0,3,0,4,0,3,0,4,0,3,0,3,0,4,1,5,1,4,0,0,3,0,5,0,5,2,0,1,0,0,0,2,1,4,0,1,3,0,0,3,0,0,3,1,1,4,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0),
+(1,4,0,5,0,3,0,2,0,3,5,4,4,3,4,3,5,3,4,3,3,0,4,3,3,3,3,3,3,2,4,4,3,1,3,4,4,5,4,4,3,4,4,1,3,5,4,3,3,3,1,2,2,3,3,1,3,1,3,3,3,5,3,3,4,5,0,3,0,3,0,3,4,3,4,4,3,0,3,0,2,4,3),
+(0,1,0,4,0,0,0,0,0,1,4,0,4,1,4,2,4,0,3,0,1,0,1,0,0,0,0,0,2,0,3,1,1,1,0,3,0,0,0,1,2,1,0,0,1,1,1,1,0,1,0,0,0,1,0,0,3,0,0,0,0,3,2,0,2,2,0,1,0,0,0,2,3,2,3,3,0,0,0,0,2,1,0),
+(0,5,1,5,0,3,0,3,0,5,4,4,5,1,5,3,3,0,4,3,4,3,5,3,4,3,3,2,4,3,4,3,3,0,3,3,1,4,4,3,4,4,4,3,4,5,5,3,2,3,1,1,3,3,1,3,1,1,3,3,2,4,5,3,3,5,0,4,0,3,0,4,4,3,5,3,3,0,3,4,0,4,3),
+(0,5,0,5,0,3,0,2,0,4,4,3,5,2,4,3,3,3,4,4,4,3,5,3,5,3,3,1,4,0,4,3,3,0,3,3,0,4,4,4,4,5,4,3,3,5,5,3,2,3,1,2,3,2,0,1,0,0,3,2,2,4,4,3,1,5,0,4,0,3,0,4,3,1,3,2,1,0,3,3,0,3,3),
+(0,4,0,5,0,5,0,4,0,4,5,5,5,3,4,3,3,2,5,4,4,3,5,3,5,3,4,0,4,3,4,4,3,2,4,4,3,4,5,4,4,5,5,0,3,5,5,4,1,3,3,2,3,3,1,3,1,0,4,3,1,4,4,3,4,5,0,4,0,2,0,4,3,4,4,3,3,0,4,0,0,5,5),
+(0,4,0,4,0,5,0,1,1,3,3,4,4,3,4,1,3,0,5,1,3,0,3,1,3,1,1,0,3,0,3,3,4,0,4,3,0,4,4,4,3,4,4,0,3,5,4,1,0,3,0,0,2,3,0,3,1,0,3,1,0,3,2,1,3,5,0,3,0,1,0,3,2,3,3,4,4,0,2,2,0,4,4),
+(2,4,0,5,0,4,0,3,0,4,5,5,4,3,5,3,5,3,5,3,5,2,5,3,4,3,3,4,3,4,5,3,2,1,5,4,3,2,3,4,5,3,4,1,2,5,4,3,0,3,3,0,3,2,0,2,3,0,4,1,0,3,4,3,3,5,0,3,0,1,0,4,5,5,5,4,3,0,4,2,0,3,5),
+(0,5,0,4,0,4,0,2,0,5,4,3,4,3,4,3,3,3,4,3,4,2,5,3,5,3,4,1,4,3,4,4,4,0,3,5,0,4,4,4,4,5,3,1,3,4,5,3,3,3,3,3,3,3,0,2,2,0,3,3,2,4,3,3,3,5,3,4,1,3,3,5,3,2,0,0,0,0,4,3,1,3,3),
+(0,1,0,3,0,3,0,1,0,1,3,3,3,2,3,3,3,0,3,0,0,0,3,1,3,0,0,0,2,2,2,3,0,0,3,2,0,1,2,4,1,3,3,0,0,3,3,3,0,1,0,0,2,1,0,0,3,0,3,1,0,3,0,0,1,3,0,2,0,1,0,3,3,1,3,3,0,0,1,1,0,3,3),
+(0,2,0,3,0,2,1,4,0,2,2,3,1,1,3,1,1,0,2,0,3,1,2,3,1,3,0,0,1,0,4,3,2,3,3,3,1,4,2,3,3,3,3,1,0,3,1,4,0,1,1,0,1,2,0,1,1,0,1,1,0,3,1,3,2,2,0,1,0,0,0,2,3,3,3,1,0,0,0,0,0,2,3),
+(0,5,0,4,0,5,0,2,0,4,5,5,3,3,4,3,3,1,5,4,4,2,4,4,4,3,4,2,4,3,5,5,4,3,3,4,3,3,5,5,4,5,5,1,3,4,5,3,1,4,3,1,3,3,0,3,3,1,4,3,1,4,5,3,3,5,0,4,0,3,0,5,3,3,1,4,3,0,4,0,1,5,3),
+(0,5,0,5,0,4,0,2,0,4,4,3,4,3,3,3,3,3,5,4,4,4,4,4,4,5,3,3,5,2,4,4,4,3,4,4,3,3,4,4,5,5,3,3,4,3,4,3,3,4,3,3,3,3,1,2,2,1,4,3,3,5,4,4,3,4,0,4,0,3,0,4,4,4,4,4,1,0,4,2,0,2,4),
+(0,4,0,4,0,3,0,1,0,3,5,2,3,0,3,0,2,1,4,2,3,3,4,1,4,3,3,2,4,1,3,3,3,0,3,3,0,0,3,3,3,5,3,3,3,3,3,2,0,2,0,0,2,0,0,2,0,0,1,0,0,3,1,2,2,3,0,3,0,2,0,4,4,3,3,4,1,0,3,0,0,2,4),
+(0,0,0,4,0,0,0,0,0,0,1,0,1,0,2,0,0,0,0,0,1,0,2,0,1,0,0,0,0,0,3,1,3,0,3,2,0,0,0,1,0,3,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,0,2,0,0,0,0,0,0,2),
+(0,2,1,3,0,2,0,2,0,3,3,3,3,1,3,1,3,3,3,3,3,3,4,2,2,1,2,1,4,0,4,3,1,3,3,3,2,4,3,5,4,3,3,3,3,3,3,3,0,1,3,0,2,0,0,1,0,0,1,0,0,4,2,0,2,3,0,3,3,0,3,3,4,2,3,1,4,0,1,2,0,2,3),
+(0,3,0,3,0,1,0,3,0,2,3,3,3,0,3,1,2,0,3,3,2,3,3,2,3,2,3,1,3,0,4,3,2,0,3,3,1,4,3,3,2,3,4,3,1,3,3,1,1,0,1,1,0,1,0,1,0,1,0,0,0,4,1,1,0,3,0,3,1,0,2,3,3,3,3,3,1,0,0,2,0,3,3),
+(0,0,0,0,0,0,0,0,0,0,3,0,2,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,3,0,3,1,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,2,0,2,3,0,0,0,0,0,0,0,0,3),
+(0,2,0,3,1,3,0,3,0,2,3,3,3,1,3,1,3,1,3,1,3,3,3,1,3,0,2,3,1,1,4,3,3,2,3,3,1,2,2,4,1,3,3,0,1,4,2,3,0,1,3,0,3,0,0,1,3,0,2,0,0,3,3,2,1,3,0,3,0,2,0,3,4,4,4,3,1,0,3,0,0,3,3),
+(0,2,0,1,0,2,0,0,0,1,3,2,2,1,3,0,1,1,3,0,3,2,3,1,2,0,2,0,1,1,3,3,3,0,3,3,1,1,2,3,2,3,3,1,2,3,2,0,0,1,0,0,0,0,0,0,3,0,1,0,0,2,1,2,1,3,0,3,0,0,0,3,4,4,4,3,2,0,2,0,0,2,4),
+(0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,2,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,3,1,0,0,0,0,0,0,0,3),
+(0,3,0,3,0,2,0,3,0,3,3,3,2,3,2,2,2,0,3,1,3,3,3,2,3,3,0,0,3,0,3,2,2,0,2,3,1,4,3,4,3,3,2,3,1,5,4,4,0,3,1,2,1,3,0,3,1,1,2,0,2,3,1,3,1,3,0,3,0,1,0,3,3,4,4,2,1,0,2,1,0,2,4),
+(0,1,0,3,0,1,0,2,0,1,4,2,5,1,4,0,2,0,2,1,3,1,4,0,2,1,0,0,2,1,4,1,1,0,3,3,0,5,1,3,2,3,3,1,0,3,2,3,0,1,0,0,0,0,0,0,1,0,0,0,0,4,0,1,0,3,0,2,0,1,0,3,3,3,4,3,3,0,0,0,0,2,3),
+(0,0,0,1,0,0,0,0,0,0,2,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,0,1,0,0,0,0,0,3),
+(0,1,0,3,0,4,0,3,0,2,4,3,1,0,3,2,2,1,3,1,2,2,3,1,1,1,2,1,3,0,1,2,0,1,3,2,1,3,0,5,5,1,0,0,1,3,2,1,0,3,0,0,1,0,0,0,0,0,3,4,0,1,1,1,3,2,0,2,0,1,0,2,3,3,1,2,3,0,1,0,1,0,4),
+(0,0,0,1,0,3,0,3,0,2,2,1,0,0,4,0,3,0,3,1,3,0,3,0,3,0,1,0,3,0,3,1,3,0,3,3,0,0,1,2,1,1,1,0,1,2,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,2,2,1,2,0,0,2,0,0,0,0,2,3,3,3,3,0,0,0,0,1,4),
+(0,0,0,3,0,3,0,0,0,0,3,1,1,0,3,0,1,0,2,0,1,0,0,0,0,0,0,0,1,0,3,0,2,0,2,3,0,0,2,2,3,1,2,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,2,0,0,0,0,2,3),
+(2,4,0,5,0,5,0,4,0,3,4,3,3,3,4,3,3,3,4,3,4,4,5,4,5,5,5,2,3,0,5,5,4,1,5,4,3,1,5,4,3,4,4,3,3,4,3,3,0,3,2,0,2,3,0,3,0,0,3,3,0,5,3,2,3,3,0,3,0,3,0,3,4,5,4,5,3,0,4,3,0,3,4),
+(0,3,0,3,0,3,0,3,0,3,3,4,3,2,3,2,3,0,4,3,3,3,3,3,3,3,3,0,3,2,4,3,3,1,3,4,3,4,4,4,3,4,4,3,2,4,4,1,0,2,0,0,1,1,0,2,0,0,3,1,0,5,3,2,1,3,0,3,0,1,2,4,3,2,4,3,3,0,3,2,0,4,4),
+(0,3,0,3,0,1,0,0,0,1,4,3,3,2,3,1,3,1,4,2,3,2,4,2,3,4,3,0,2,2,3,3,3,0,3,3,3,0,3,4,1,3,3,0,3,4,3,3,0,1,1,0,1,0,0,0,4,0,3,0,0,3,1,2,1,3,0,4,0,1,0,4,3,3,4,3,3,0,2,0,0,3,3),
+(0,3,0,4,0,1,0,3,0,3,4,3,3,0,3,3,3,1,3,1,3,3,4,3,3,3,0,0,3,1,5,3,3,1,3,3,2,5,4,3,3,4,5,3,2,5,3,4,0,1,0,0,0,0,0,2,0,0,1,1,0,4,2,2,1,3,0,3,0,2,0,4,4,3,5,3,2,0,1,1,0,3,4),
+(0,5,0,4,0,5,0,2,0,4,4,3,3,2,3,3,3,1,4,3,4,1,5,3,4,3,4,0,4,2,4,3,4,1,5,4,0,4,4,4,4,5,4,1,3,5,4,2,1,4,1,1,3,2,0,3,1,0,3,2,1,4,3,3,3,4,0,4,0,3,0,4,4,4,3,3,3,0,4,2,0,3,4),
+(1,4,0,4,0,3,0,1,0,3,3,3,1,1,3,3,2,2,3,3,1,0,3,2,2,1,2,0,3,1,2,1,2,0,3,2,0,2,2,3,3,4,3,0,3,3,1,2,0,1,1,3,1,2,0,0,3,0,1,1,0,3,2,2,3,3,0,3,0,0,0,2,3,3,4,3,3,0,1,0,0,1,4),
+(0,4,0,4,0,4,0,0,0,3,4,4,3,1,4,2,3,2,3,3,3,1,4,3,4,0,3,0,4,2,3,3,2,2,5,4,2,1,3,4,3,4,3,1,3,3,4,2,0,2,1,0,3,3,0,0,2,0,3,1,0,4,4,3,4,3,0,4,0,1,0,2,4,4,4,4,4,0,3,2,0,3,3),
+(0,0,0,1,0,4,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,3,2,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,2),
+(0,2,0,3,0,4,0,4,0,1,3,3,3,0,4,0,2,1,2,1,1,1,2,0,3,1,1,0,1,0,3,1,0,0,3,3,2,0,1,1,0,0,0,0,0,1,0,2,0,2,2,0,3,1,0,0,1,0,1,1,0,1,2,0,3,0,0,0,0,1,0,0,3,3,4,3,1,0,1,0,3,0,2),
+(0,0,0,3,0,5,0,0,0,0,1,0,2,0,3,1,0,1,3,0,0,0,2,0,0,0,1,0,0,0,1,1,0,0,4,0,0,0,2,3,0,1,4,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,3,0,0,0,0,0,3),
+(0,2,0,5,0,5,0,1,0,2,4,3,3,2,5,1,3,2,3,3,3,0,4,1,2,0,3,0,4,0,2,2,1,1,5,3,0,0,1,4,2,3,2,0,3,3,3,2,0,2,4,1,1,2,0,1,1,0,3,1,0,1,3,1,2,3,0,2,0,0,0,1,3,5,4,4,4,0,3,0,0,1,3),
+(0,4,0,5,0,4,0,4,0,4,5,4,3,3,4,3,3,3,4,3,4,4,5,3,4,5,4,2,4,2,3,4,3,1,4,4,1,3,5,4,4,5,5,4,4,5,5,5,2,3,3,1,4,3,1,3,3,0,3,3,1,4,3,4,4,4,0,3,0,4,0,3,3,4,4,5,0,0,4,3,0,4,5),
+(0,4,0,4,0,3,0,3,0,3,4,4,4,3,3,2,4,3,4,3,4,3,5,3,4,3,2,1,4,2,4,4,3,1,3,4,2,4,5,5,3,4,5,4,1,5,4,3,0,3,2,2,3,2,1,3,1,0,3,3,3,5,3,3,3,5,4,4,2,3,3,4,3,3,3,2,1,0,3,2,1,4,3),
+(0,4,0,5,0,4,0,3,0,3,5,5,3,2,4,3,4,0,5,4,4,1,4,4,4,3,3,3,4,3,5,5,2,3,3,4,1,2,5,5,3,5,5,2,3,5,5,4,0,3,2,0,3,3,1,1,5,1,4,1,0,4,3,2,3,5,0,4,0,3,0,5,4,3,4,3,0,0,4,1,0,4,4),
+(1,3,0,4,0,2,0,2,0,2,5,5,3,3,3,3,3,0,4,2,3,4,4,4,3,4,0,0,3,4,5,4,3,3,3,3,2,5,5,4,5,5,5,4,3,5,5,5,1,3,1,0,1,0,0,3,2,0,4,2,0,5,2,3,2,4,1,3,0,3,0,4,5,4,5,4,3,0,4,2,0,5,4),
+(0,3,0,4,0,5,0,3,0,3,4,4,3,2,3,2,3,3,3,3,3,2,4,3,3,2,2,0,3,3,3,3,3,1,3,3,3,0,4,4,3,4,4,1,1,4,4,2,0,3,1,0,1,1,0,4,1,0,2,3,1,3,3,1,3,4,0,3,0,1,0,3,1,3,0,0,1,0,2,0,0,4,4),
+(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
+(0,3,0,3,0,2,0,3,0,1,5,4,3,3,3,1,4,2,1,2,3,4,4,2,4,4,5,0,3,1,4,3,4,0,4,3,3,3,2,3,2,5,3,4,3,2,2,3,0,0,3,0,2,1,0,1,2,0,0,0,0,2,1,1,3,1,0,2,0,4,0,3,4,4,4,5,2,0,2,0,0,1,3),
+(0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,0,0,1,1,0,0,0,4,2,1,1,0,1,0,3,2,0,0,3,1,1,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,1,0,0,0,2,0,0,0,1,4,0,4,2,1,0,0,0,0,0,1),
+(0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,3,1,0,0,0,2,0,2,1,0,0,1,2,1,0,1,1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,1,3,1,0,0,0,0,0,1,0,0,2,1,0,0,0,0,0,0,0,0,2),
+(0,4,0,4,0,4,0,3,0,4,4,3,4,2,4,3,2,0,4,4,4,3,5,3,5,3,3,2,4,2,4,3,4,3,1,4,0,2,3,4,4,4,3,3,3,4,4,4,3,4,1,3,4,3,2,1,2,1,3,3,3,4,4,3,3,5,0,4,0,3,0,4,3,3,3,2,1,0,3,0,0,3,3),
+(0,4,0,3,0,3,0,3,0,3,5,5,3,3,3,3,4,3,4,3,3,3,4,4,4,3,3,3,3,4,3,5,3,3,1,3,2,4,5,5,5,5,4,3,4,5,5,3,2,2,3,3,3,3,2,3,3,1,2,3,2,4,3,3,3,4,0,4,0,2,0,4,3,2,2,1,2,0,3,0,0,4,1),
+)
+
+class JapaneseContextAnalysis:
+ def __init__(self):
+ self.reset()
+
+ def reset(self):
+ self._mTotalRel = 0 # total sequence received
+ # category counters, each interger counts sequence in its category
+ self._mRelSample = [0] * NUM_OF_CATEGORY
+ # if last byte in current buffer is not the last byte of a character,
+ # we need to know how many bytes to skip in next buffer
+ self._mNeedToSkipCharNum = 0
+ self._mLastCharOrder = -1 # The order of previous char
+ # If this flag is set to True, detection is done and conclusion has
+ # been made
+ self._mDone = False
+
+ def feed(self, aBuf, aLen):
+ if self._mDone:
+ return
+
+ # The buffer we got is byte oriented, and a character may span in more than one
+ # buffers. In case the last one or two byte in last buffer is not
+ # complete, we record how many byte needed to complete that character
+ # and skip these bytes here. We can choose to record those bytes as
+ # well and analyse the character once it is complete, but since a
+ # character will not make much difference, by simply skipping
+ # this character will simply our logic and improve performance.
+ i = self._mNeedToSkipCharNum
+ while i < aLen:
+ order, charLen = self.get_order(aBuf[i:i + 2])
+ i += charLen
+ if i > aLen:
+ self._mNeedToSkipCharNum = i - aLen
+ self._mLastCharOrder = -1
+ else:
+ if (order != -1) and (self._mLastCharOrder != -1):
+ self._mTotalRel += 1
+ if self._mTotalRel > MAX_REL_THRESHOLD:
+ self._mDone = True
+ break
+ self._mRelSample[jp2CharContext[self._mLastCharOrder][order]] += 1
+ self._mLastCharOrder = order
+
+ def got_enough_data(self):
+ return self._mTotalRel > ENOUGH_REL_THRESHOLD
+
+ def get_confidence(self):
+ # This is just one way to calculate confidence. It works well for me.
+ if self._mTotalRel > MINIMUM_DATA_THRESHOLD:
+ return (self._mTotalRel - self._mRelSample[0]) / self._mTotalRel
+ else:
+ return DONT_KNOW
+
+ def get_order(self, aBuf):
+ return -1, 1
+
+class SJISContextAnalysis(JapaneseContextAnalysis):
+ def get_order(self, aBuf):
+ if not aBuf:
+ return -1, 1
+ # find out current char's byte length
+ first_char = wrap_ord(aBuf[0])
+ if ((0x81 <= first_char <= 0x9F) or (0xE0 <= first_char <= 0xFC)):
+ charLen = 2
+ else:
+ charLen = 1
+
+ # return its order if it is hiragana
+ if len(aBuf) > 1:
+ second_char = wrap_ord(aBuf[1])
+ if (first_char == 202) and (0x9F <= second_char <= 0xF1):
+ return second_char - 0x9F, charLen
+
+ return -1, charLen
+
+class EUCJPContextAnalysis(JapaneseContextAnalysis):
+ def get_order(self, aBuf):
+ if not aBuf:
+ return -1, 1
+ # find out current char's byte length
+ first_char = wrap_ord(aBuf[0])
+ if (first_char == 0x8E) or (0xA1 <= first_char <= 0xFE):
+ charLen = 2
+ elif first_char == 0x8F:
+ charLen = 3
+ else:
+ charLen = 1
+
+ # return its order if it is hiragana
+ if len(aBuf) > 1:
+ second_char = wrap_ord(aBuf[1])
+ if (first_char == 0xA4) and (0xA1 <= second_char <= 0xF3):
+ return second_char - 0xA1, charLen
+
+ return -1, charLen
+
+# flake8: noqa
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/langbulgarianmodel.py b/app/src/processing/app/i18n/python/requests/packages/charade/langbulgarianmodel.py
index ea5a60ba043..e5788fc64a6 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/langbulgarianmodel.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/langbulgarianmodel.py
@@ -1,229 +1,229 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is Mozilla Communicator client code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 1998
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-# 255: Control characters that usually does not exist in any text
-# 254: Carriage/Return
-# 253: symbol (punctuation) that does not belong to word
-# 252: 0 - 9
-
-# Character Mapping Table:
-# this table is modified base on win1251BulgarianCharToOrderMap, so
-# only number <64 is sure valid
-
-Latin5_BulgarianCharToOrderMap = (
-255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
-253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
-252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
-253, 77, 90, 99,100, 72,109,107,101, 79,185, 81,102, 76, 94, 82, # 40
-110,186,108, 91, 74,119, 84, 96,111,187,115,253,253,253,253,253, # 50
-253, 65, 69, 70, 66, 63, 68,112,103, 92,194,104, 95, 86, 87, 71, # 60
-116,195, 85, 93, 97,113,196,197,198,199,200,253,253,253,253,253, # 70
-194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209, # 80
-210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225, # 90
- 81,226,227,228,229,230,105,231,232,233,234,235,236, 45,237,238, # a0
- 31, 32, 35, 43, 37, 44, 55, 47, 40, 59, 33, 46, 38, 36, 41, 30, # b0
- 39, 28, 34, 51, 48, 49, 53, 50, 54, 57, 61,239, 67,240, 60, 56, # c0
- 1, 18, 9, 20, 11, 3, 23, 15, 2, 26, 12, 10, 14, 6, 4, 13, # d0
- 7, 8, 5, 19, 29, 25, 22, 21, 27, 24, 17, 75, 52,241, 42, 16, # e0
- 62,242,243,244, 58,245, 98,246,247,248,249,250,251, 91,252,253, # f0
-)
-
-win1251BulgarianCharToOrderMap = (
-255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
-253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
-252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
-253, 77, 90, 99,100, 72,109,107,101, 79,185, 81,102, 76, 94, 82, # 40
-110,186,108, 91, 74,119, 84, 96,111,187,115,253,253,253,253,253, # 50
-253, 65, 69, 70, 66, 63, 68,112,103, 92,194,104, 95, 86, 87, 71, # 60
-116,195, 85, 93, 97,113,196,197,198,199,200,253,253,253,253,253, # 70
-206,207,208,209,210,211,212,213,120,214,215,216,217,218,219,220, # 80
-221, 78, 64, 83,121, 98,117,105,222,223,224,225,226,227,228,229, # 90
- 88,230,231,232,233,122, 89,106,234,235,236,237,238, 45,239,240, # a0
- 73, 80,118,114,241,242,243,244,245, 62, 58,246,247,248,249,250, # b0
- 31, 32, 35, 43, 37, 44, 55, 47, 40, 59, 33, 46, 38, 36, 41, 30, # c0
- 39, 28, 34, 51, 48, 49, 53, 50, 54, 57, 61,251, 67,252, 60, 56, # d0
- 1, 18, 9, 20, 11, 3, 23, 15, 2, 26, 12, 10, 14, 6, 4, 13, # e0
- 7, 8, 5, 19, 29, 25, 22, 21, 27, 24, 17, 75, 52,253, 42, 16, # f0
-)
-
-# Model Table:
-# total sequences: 100%
-# first 512 sequences: 96.9392%
-# first 1024 sequences:3.0618%
-# rest sequences: 0.2992%
-# negative sequences: 0.0020%
-BulgarianLangModel = (
-0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,2,3,3,3,3,3,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,2,2,3,2,2,1,2,2,
-3,1,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,3,3,3,3,3,3,3,0,3,0,1,
-0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,2,3,3,3,3,3,3,3,3,0,3,1,0,
-0,1,0,0,0,0,0,0,0,0,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
-3,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,2,3,3,3,3,3,3,3,3,0,3,0,0,
-0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,2,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,1,3,2,3,3,3,3,3,3,3,3,0,3,0,0,
-0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,3,3,3,3,3,3,3,3,3,2,3,2,2,1,3,3,3,3,2,2,2,1,1,2,0,1,0,1,0,0,
-0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,
-3,3,3,3,3,3,3,2,3,2,2,3,3,1,1,2,3,3,2,3,3,3,3,2,1,2,0,2,0,3,0,0,
-0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,
-3,3,3,3,3,3,3,1,3,3,3,3,3,2,3,2,3,3,3,3,3,2,3,3,1,3,0,3,0,2,0,0,
-0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,
-3,3,3,3,3,3,3,3,1,3,3,2,3,3,3,1,3,3,2,3,2,2,2,0,0,2,0,2,0,2,0,0,
-0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,
-3,3,3,3,3,3,3,3,3,0,3,3,3,2,2,3,3,3,1,2,2,3,2,1,1,2,0,2,0,0,0,0,
-1,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,
-3,3,3,3,3,3,3,2,3,3,1,2,3,2,2,2,3,3,3,3,3,2,2,3,1,2,0,2,1,2,0,0,
-0,0,0,0,0,0,0,0,0,0,3,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,
-3,3,3,3,3,1,3,3,3,3,3,2,3,3,3,2,3,3,2,3,2,2,2,3,1,2,0,1,0,1,0,0,
-0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,
-3,3,3,3,3,3,3,3,3,3,3,1,1,1,2,2,1,3,1,3,2,2,3,0,0,1,0,1,0,1,0,0,
-0,0,0,1,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,
-3,3,3,3,3,2,2,3,2,2,3,1,2,1,1,1,2,3,1,3,1,2,2,0,1,1,1,1,0,1,0,0,
-0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,
-3,3,3,3,3,1,3,2,2,3,3,1,2,3,1,1,3,3,3,3,1,2,2,1,1,1,0,2,0,2,0,1,
-0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,2,2,3,3,3,2,2,1,1,2,0,2,0,1,0,0,
-0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,
-3,0,1,2,1,3,3,2,3,3,3,3,3,2,3,2,1,0,3,1,2,1,2,1,2,3,2,1,0,1,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-1,1,1,2,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,1,3,3,2,3,3,2,2,2,0,1,0,0,
-0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2,3,3,3,3,0,3,3,3,3,3,2,1,1,2,1,3,3,0,3,1,1,1,1,3,2,0,1,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,
-3,3,2,2,2,3,3,3,3,3,3,3,3,3,3,3,1,1,3,1,3,3,2,3,2,2,2,3,0,2,0,0,
-0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,3,3,3,2,3,3,2,2,3,2,1,1,1,1,1,3,1,3,1,1,0,0,0,1,0,0,0,1,0,0,
-0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,
-3,3,3,3,3,2,3,2,0,3,2,0,3,0,2,0,0,2,1,3,1,0,0,1,0,0,0,1,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
-3,3,3,3,2,1,1,1,1,2,1,1,2,1,1,1,2,2,1,2,1,1,1,0,1,1,0,1,0,1,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,
-3,3,3,3,2,1,3,1,1,2,1,3,2,1,1,0,1,2,3,2,1,1,1,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2,3,3,3,3,2,2,1,0,1,0,0,1,0,0,0,2,1,0,3,0,0,1,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
-3,3,3,2,3,2,3,3,1,3,2,1,1,1,2,1,1,2,1,3,0,1,0,0,0,1,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,1,1,2,2,3,3,2,3,2,2,2,3,1,2,2,1,1,2,1,1,2,2,0,1,1,0,1,0,2,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,3,3,2,1,3,1,0,2,2,1,3,2,1,0,0,2,0,2,0,1,0,0,0,0,0,0,0,1,0,0,
-0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,
-3,3,3,3,3,3,1,2,0,2,3,1,2,3,2,0,1,3,1,2,1,1,1,0,0,1,0,0,2,2,2,3,
-2,2,2,2,1,2,1,1,2,2,1,1,2,0,1,1,1,0,0,1,1,0,0,1,1,0,0,0,1,1,0,1,
-3,3,3,3,3,2,1,2,2,1,2,0,2,0,1,0,1,2,1,2,1,1,0,0,0,1,0,1,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,
-3,3,2,3,3,1,1,3,1,0,3,2,1,0,0,0,1,2,0,2,0,1,0,0,0,1,0,1,2,1,2,2,
-1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,0,1,2,1,1,1,0,0,0,0,0,1,1,0,0,
-3,1,0,1,0,2,3,2,2,2,3,2,2,2,2,2,1,0,2,1,2,1,1,1,0,1,2,1,2,2,2,1,
-1,1,2,2,2,2,1,2,1,1,0,1,2,1,2,2,2,1,1,1,0,1,1,1,1,2,0,1,0,0,0,0,
-2,3,2,3,3,0,0,2,1,0,2,1,0,0,0,0,2,3,0,2,0,0,0,0,0,1,0,0,2,0,1,2,
-2,1,2,1,2,2,1,1,1,2,1,1,1,0,1,2,2,1,1,1,1,1,0,1,1,1,0,0,1,2,0,0,
-3,3,2,2,3,0,2,3,1,1,2,0,0,0,1,0,0,2,0,2,0,0,0,1,0,1,0,1,2,0,2,2,
-1,1,1,1,2,1,0,1,2,2,2,1,1,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,1,1,0,0,
-2,3,2,3,3,0,0,3,0,1,1,0,1,0,0,0,2,2,1,2,0,0,0,0,0,0,0,0,2,0,1,2,
-2,2,1,1,1,1,1,2,2,2,1,0,2,0,1,0,1,0,0,1,0,1,0,0,1,0,0,0,0,1,0,0,
-3,3,3,3,2,2,2,2,2,0,2,1,1,1,1,2,1,2,1,1,0,2,0,1,0,1,0,0,2,0,1,2,
-1,1,1,1,1,1,1,2,2,1,1,0,2,0,1,0,2,0,0,1,1,1,0,0,2,0,0,0,1,1,0,0,
-2,3,3,3,3,1,0,0,0,0,0,0,0,0,0,0,2,0,0,1,1,0,0,0,0,0,0,1,2,0,1,2,
-2,2,2,1,1,2,1,1,2,2,2,1,2,0,1,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,0,0,
-2,3,3,3,3,0,2,2,0,2,1,0,0,0,1,1,1,2,0,2,0,0,0,3,0,0,0,0,2,0,2,2,
-1,1,1,2,1,2,1,1,2,2,2,1,2,0,1,1,1,0,1,1,1,1,0,2,1,0,0,0,1,1,0,0,
-2,3,3,3,3,0,2,1,0,0,2,0,0,0,0,0,1,2,0,2,0,0,0,0,0,0,0,0,2,0,1,2,
-1,1,1,2,1,1,1,1,2,2,2,0,1,0,1,1,1,0,0,1,1,1,0,0,1,0,0,0,0,1,0,0,
-3,3,2,2,3,0,1,0,1,0,0,0,0,0,0,0,1,1,0,3,0,0,0,0,0,0,0,0,1,0,2,2,
-1,1,1,1,1,2,1,1,2,2,1,2,2,1,0,1,1,1,1,1,0,1,0,0,1,0,0,0,1,1,0,0,
-3,1,0,1,0,2,2,2,2,3,2,1,1,1,2,3,0,0,1,0,2,1,1,0,1,1,1,1,2,1,1,1,
-1,2,2,1,2,1,2,2,1,1,0,1,2,1,2,2,1,1,1,0,0,1,1,1,2,1,0,1,0,0,0,0,
-2,1,0,1,0,3,1,2,2,2,2,1,2,2,1,1,1,0,2,1,2,2,1,1,2,1,1,0,2,1,1,1,
-1,2,2,2,2,2,2,2,1,2,0,1,1,0,2,1,1,1,1,1,0,0,1,1,1,1,0,1,0,0,0,0,
-2,1,1,1,1,2,2,2,2,1,2,2,2,1,2,2,1,1,2,1,2,3,2,2,1,1,1,1,0,1,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2,2,2,3,2,0,1,2,0,1,2,1,1,0,1,0,1,2,1,2,0,0,0,1,1,0,0,0,1,0,0,2,
-1,1,0,0,1,1,0,1,1,1,1,0,2,0,1,1,1,0,0,1,1,0,0,0,0,1,0,0,0,1,0,0,
-2,0,0,0,0,1,2,2,2,2,2,2,2,1,2,1,1,1,1,1,1,1,0,1,1,1,1,1,2,1,1,1,
-1,2,2,2,2,1,1,2,1,2,1,1,1,0,2,1,2,1,1,1,0,2,1,1,1,1,0,1,0,0,0,0,
-3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,
-1,1,0,1,0,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2,2,2,3,2,0,0,0,0,1,0,0,0,0,0,0,1,1,0,2,0,0,0,0,0,0,0,0,1,0,1,2,
-1,1,1,1,1,1,0,0,2,2,2,2,2,0,1,1,0,1,1,1,1,1,0,0,1,0,0,0,1,1,0,1,
-2,3,1,2,1,0,1,1,0,2,2,2,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,1,2,
-1,1,1,1,2,1,1,1,1,1,1,1,1,0,1,1,0,1,0,1,0,1,0,0,1,0,0,0,0,1,0,0,
-2,2,2,2,2,0,0,2,0,0,2,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,2,0,2,2,
-1,1,1,1,1,0,0,1,2,1,1,0,1,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,
-1,2,2,2,2,0,0,2,0,1,1,0,0,0,1,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,1,1,
-0,0,0,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,
-1,2,2,3,2,0,0,1,0,0,1,0,0,0,0,0,0,1,0,2,0,0,0,1,0,0,0,0,0,0,0,2,
-1,1,0,0,1,0,0,0,1,1,0,0,1,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,
-2,1,2,2,2,1,2,1,2,2,1,1,2,1,1,1,0,1,1,1,1,2,0,1,0,1,1,1,1,0,1,1,
-1,1,2,1,1,1,1,1,1,0,0,1,2,1,1,1,1,1,1,0,0,1,1,1,0,0,0,0,0,0,0,0,
-1,0,0,1,3,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2,2,2,2,1,0,0,1,0,2,0,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,2,0,0,1,
-0,2,0,1,0,0,1,1,2,0,1,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
-1,2,2,2,2,0,1,1,0,2,1,0,1,1,1,0,0,1,0,2,0,1,0,0,0,0,0,0,0,0,0,1,
-0,1,0,0,1,0,0,0,1,1,0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,
-2,2,2,2,2,0,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,
-0,1,0,1,1,1,0,0,1,1,1,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,
-2,0,1,0,0,1,2,1,1,1,1,1,1,2,2,1,0,0,1,0,1,0,0,0,0,1,1,1,1,0,0,0,
-1,1,2,1,1,1,1,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2,2,1,2,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,
-0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-1,0,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
-0,1,1,0,1,1,1,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,
-1,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,2,0,0,2,0,1,0,0,1,0,0,1,
-1,1,0,0,1,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,
-1,1,1,1,1,1,1,2,0,0,0,0,0,0,2,1,0,1,1,0,0,1,1,1,0,1,0,0,0,0,0,0,
-2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,1,1,1,1,0,1,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
-)
-
-Latin5BulgarianModel = {
- 'charToOrderMap': Latin5_BulgarianCharToOrderMap,
- 'precedenceMatrix': BulgarianLangModel,
- 'mTypicalPositiveRatio': 0.969392,
- 'keepEnglishLetter': False,
- 'charsetName': "ISO-8859-5"
-}
-
-Win1251BulgarianModel = {
- 'charToOrderMap': win1251BulgarianCharToOrderMap,
- 'precedenceMatrix': BulgarianLangModel,
- 'mTypicalPositiveRatio': 0.969392,
- 'keepEnglishLetter': False,
- 'charsetName': "windows-1251"
-}
-
-
-# flake8: noqa
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is Mozilla Communicator client code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+# 255: Control characters that usually does not exist in any text
+# 254: Carriage/Return
+# 253: symbol (punctuation) that does not belong to word
+# 252: 0 - 9
+
+# Character Mapping Table:
+# this table is modified base on win1251BulgarianCharToOrderMap, so
+# only number <64 is sure valid
+
+Latin5_BulgarianCharToOrderMap = (
+255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
+253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
+252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
+253, 77, 90, 99,100, 72,109,107,101, 79,185, 81,102, 76, 94, 82, # 40
+110,186,108, 91, 74,119, 84, 96,111,187,115,253,253,253,253,253, # 50
+253, 65, 69, 70, 66, 63, 68,112,103, 92,194,104, 95, 86, 87, 71, # 60
+116,195, 85, 93, 97,113,196,197,198,199,200,253,253,253,253,253, # 70
+194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209, # 80
+210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225, # 90
+ 81,226,227,228,229,230,105,231,232,233,234,235,236, 45,237,238, # a0
+ 31, 32, 35, 43, 37, 44, 55, 47, 40, 59, 33, 46, 38, 36, 41, 30, # b0
+ 39, 28, 34, 51, 48, 49, 53, 50, 54, 57, 61,239, 67,240, 60, 56, # c0
+ 1, 18, 9, 20, 11, 3, 23, 15, 2, 26, 12, 10, 14, 6, 4, 13, # d0
+ 7, 8, 5, 19, 29, 25, 22, 21, 27, 24, 17, 75, 52,241, 42, 16, # e0
+ 62,242,243,244, 58,245, 98,246,247,248,249,250,251, 91,252,253, # f0
+)
+
+win1251BulgarianCharToOrderMap = (
+255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
+253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
+252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
+253, 77, 90, 99,100, 72,109,107,101, 79,185, 81,102, 76, 94, 82, # 40
+110,186,108, 91, 74,119, 84, 96,111,187,115,253,253,253,253,253, # 50
+253, 65, 69, 70, 66, 63, 68,112,103, 92,194,104, 95, 86, 87, 71, # 60
+116,195, 85, 93, 97,113,196,197,198,199,200,253,253,253,253,253, # 70
+206,207,208,209,210,211,212,213,120,214,215,216,217,218,219,220, # 80
+221, 78, 64, 83,121, 98,117,105,222,223,224,225,226,227,228,229, # 90
+ 88,230,231,232,233,122, 89,106,234,235,236,237,238, 45,239,240, # a0
+ 73, 80,118,114,241,242,243,244,245, 62, 58,246,247,248,249,250, # b0
+ 31, 32, 35, 43, 37, 44, 55, 47, 40, 59, 33, 46, 38, 36, 41, 30, # c0
+ 39, 28, 34, 51, 48, 49, 53, 50, 54, 57, 61,251, 67,252, 60, 56, # d0
+ 1, 18, 9, 20, 11, 3, 23, 15, 2, 26, 12, 10, 14, 6, 4, 13, # e0
+ 7, 8, 5, 19, 29, 25, 22, 21, 27, 24, 17, 75, 52,253, 42, 16, # f0
+)
+
+# Model Table:
+# total sequences: 100%
+# first 512 sequences: 96.9392%
+# first 1024 sequences:3.0618%
+# rest sequences: 0.2992%
+# negative sequences: 0.0020%
+BulgarianLangModel = (
+0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,2,3,3,3,3,3,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,2,2,3,2,2,1,2,2,
+3,1,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,3,3,3,3,3,3,3,0,3,0,1,
+0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,2,3,3,3,3,3,3,3,3,0,3,1,0,
+0,1,0,0,0,0,0,0,0,0,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
+3,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,2,3,3,3,3,3,3,3,3,0,3,0,0,
+0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,2,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,1,3,2,3,3,3,3,3,3,3,3,0,3,0,0,
+0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,3,3,3,3,3,3,3,3,3,2,3,2,2,1,3,3,3,3,2,2,2,1,1,2,0,1,0,1,0,0,
+0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,
+3,3,3,3,3,3,3,2,3,2,2,3,3,1,1,2,3,3,2,3,3,3,3,2,1,2,0,2,0,3,0,0,
+0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,
+3,3,3,3,3,3,3,1,3,3,3,3,3,2,3,2,3,3,3,3,3,2,3,3,1,3,0,3,0,2,0,0,
+0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,
+3,3,3,3,3,3,3,3,1,3,3,2,3,3,3,1,3,3,2,3,2,2,2,0,0,2,0,2,0,2,0,0,
+0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,
+3,3,3,3,3,3,3,3,3,0,3,3,3,2,2,3,3,3,1,2,2,3,2,1,1,2,0,2,0,0,0,0,
+1,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,
+3,3,3,3,3,3,3,2,3,3,1,2,3,2,2,2,3,3,3,3,3,2,2,3,1,2,0,2,1,2,0,0,
+0,0,0,0,0,0,0,0,0,0,3,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,
+3,3,3,3,3,1,3,3,3,3,3,2,3,3,3,2,3,3,2,3,2,2,2,3,1,2,0,1,0,1,0,0,
+0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,
+3,3,3,3,3,3,3,3,3,3,3,1,1,1,2,2,1,3,1,3,2,2,3,0,0,1,0,1,0,1,0,0,
+0,0,0,1,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,
+3,3,3,3,3,2,2,3,2,2,3,1,2,1,1,1,2,3,1,3,1,2,2,0,1,1,1,1,0,1,0,0,
+0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,
+3,3,3,3,3,1,3,2,2,3,3,1,2,3,1,1,3,3,3,3,1,2,2,1,1,1,0,2,0,2,0,1,
+0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,2,2,3,3,3,2,2,1,1,2,0,2,0,1,0,0,
+0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,
+3,0,1,2,1,3,3,2,3,3,3,3,3,2,3,2,1,0,3,1,2,1,2,1,2,3,2,1,0,1,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+1,1,1,2,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,1,3,3,2,3,3,2,2,2,0,1,0,0,
+0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2,3,3,3,3,0,3,3,3,3,3,2,1,1,2,1,3,3,0,3,1,1,1,1,3,2,0,1,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,
+3,3,2,2,2,3,3,3,3,3,3,3,3,3,3,3,1,1,3,1,3,3,2,3,2,2,2,3,0,2,0,0,
+0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,3,3,3,2,3,3,2,2,3,2,1,1,1,1,1,3,1,3,1,1,0,0,0,1,0,0,0,1,0,0,
+0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,
+3,3,3,3,3,2,3,2,0,3,2,0,3,0,2,0,0,2,1,3,1,0,0,1,0,0,0,1,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
+3,3,3,3,2,1,1,1,1,2,1,1,2,1,1,1,2,2,1,2,1,1,1,0,1,1,0,1,0,1,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,
+3,3,3,3,2,1,3,1,1,2,1,3,2,1,1,0,1,2,3,2,1,1,1,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2,3,3,3,3,2,2,1,0,1,0,0,1,0,0,0,2,1,0,3,0,0,1,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
+3,3,3,2,3,2,3,3,1,3,2,1,1,1,2,1,1,2,1,3,0,1,0,0,0,1,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,1,1,2,2,3,3,2,3,2,2,2,3,1,2,2,1,1,2,1,1,2,2,0,1,1,0,1,0,2,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,3,3,2,1,3,1,0,2,2,1,3,2,1,0,0,2,0,2,0,1,0,0,0,0,0,0,0,1,0,0,
+0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,
+3,3,3,3,3,3,1,2,0,2,3,1,2,3,2,0,1,3,1,2,1,1,1,0,0,1,0,0,2,2,2,3,
+2,2,2,2,1,2,1,1,2,2,1,1,2,0,1,1,1,0,0,1,1,0,0,1,1,0,0,0,1,1,0,1,
+3,3,3,3,3,2,1,2,2,1,2,0,2,0,1,0,1,2,1,2,1,1,0,0,0,1,0,1,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,
+3,3,2,3,3,1,1,3,1,0,3,2,1,0,0,0,1,2,0,2,0,1,0,0,0,1,0,1,2,1,2,2,
+1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,0,1,2,1,1,1,0,0,0,0,0,1,1,0,0,
+3,1,0,1,0,2,3,2,2,2,3,2,2,2,2,2,1,0,2,1,2,1,1,1,0,1,2,1,2,2,2,1,
+1,1,2,2,2,2,1,2,1,1,0,1,2,1,2,2,2,1,1,1,0,1,1,1,1,2,0,1,0,0,0,0,
+2,3,2,3,3,0,0,2,1,0,2,1,0,0,0,0,2,3,0,2,0,0,0,0,0,1,0,0,2,0,1,2,
+2,1,2,1,2,2,1,1,1,2,1,1,1,0,1,2,2,1,1,1,1,1,0,1,1,1,0,0,1,2,0,0,
+3,3,2,2,3,0,2,3,1,1,2,0,0,0,1,0,0,2,0,2,0,0,0,1,0,1,0,1,2,0,2,2,
+1,1,1,1,2,1,0,1,2,2,2,1,1,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,1,1,0,0,
+2,3,2,3,3,0,0,3,0,1,1,0,1,0,0,0,2,2,1,2,0,0,0,0,0,0,0,0,2,0,1,2,
+2,2,1,1,1,1,1,2,2,2,1,0,2,0,1,0,1,0,0,1,0,1,0,0,1,0,0,0,0,1,0,0,
+3,3,3,3,2,2,2,2,2,0,2,1,1,1,1,2,1,2,1,1,0,2,0,1,0,1,0,0,2,0,1,2,
+1,1,1,1,1,1,1,2,2,1,1,0,2,0,1,0,2,0,0,1,1,1,0,0,2,0,0,0,1,1,0,0,
+2,3,3,3,3,1,0,0,0,0,0,0,0,0,0,0,2,0,0,1,1,0,0,0,0,0,0,1,2,0,1,2,
+2,2,2,1,1,2,1,1,2,2,2,1,2,0,1,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,0,0,
+2,3,3,3,3,0,2,2,0,2,1,0,0,0,1,1,1,2,0,2,0,0,0,3,0,0,0,0,2,0,2,2,
+1,1,1,2,1,2,1,1,2,2,2,1,2,0,1,1,1,0,1,1,1,1,0,2,1,0,0,0,1,1,0,0,
+2,3,3,3,3,0,2,1,0,0,2,0,0,0,0,0,1,2,0,2,0,0,0,0,0,0,0,0,2,0,1,2,
+1,1,1,2,1,1,1,1,2,2,2,0,1,0,1,1,1,0,0,1,1,1,0,0,1,0,0,0,0,1,0,0,
+3,3,2,2,3,0,1,0,1,0,0,0,0,0,0,0,1,1,0,3,0,0,0,0,0,0,0,0,1,0,2,2,
+1,1,1,1,1,2,1,1,2,2,1,2,2,1,0,1,1,1,1,1,0,1,0,0,1,0,0,0,1,1,0,0,
+3,1,0,1,0,2,2,2,2,3,2,1,1,1,2,3,0,0,1,0,2,1,1,0,1,1,1,1,2,1,1,1,
+1,2,2,1,2,1,2,2,1,1,0,1,2,1,2,2,1,1,1,0,0,1,1,1,2,1,0,1,0,0,0,0,
+2,1,0,1,0,3,1,2,2,2,2,1,2,2,1,1,1,0,2,1,2,2,1,1,2,1,1,0,2,1,1,1,
+1,2,2,2,2,2,2,2,1,2,0,1,1,0,2,1,1,1,1,1,0,0,1,1,1,1,0,1,0,0,0,0,
+2,1,1,1,1,2,2,2,2,1,2,2,2,1,2,2,1,1,2,1,2,3,2,2,1,1,1,1,0,1,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2,2,2,3,2,0,1,2,0,1,2,1,1,0,1,0,1,2,1,2,0,0,0,1,1,0,0,0,1,0,0,2,
+1,1,0,0,1,1,0,1,1,1,1,0,2,0,1,1,1,0,0,1,1,0,0,0,0,1,0,0,0,1,0,0,
+2,0,0,0,0,1,2,2,2,2,2,2,2,1,2,1,1,1,1,1,1,1,0,1,1,1,1,1,2,1,1,1,
+1,2,2,2,2,1,1,2,1,2,1,1,1,0,2,1,2,1,1,1,0,2,1,1,1,1,0,1,0,0,0,0,
+3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,
+1,1,0,1,0,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2,2,2,3,2,0,0,0,0,1,0,0,0,0,0,0,1,1,0,2,0,0,0,0,0,0,0,0,1,0,1,2,
+1,1,1,1,1,1,0,0,2,2,2,2,2,0,1,1,0,1,1,1,1,1,0,0,1,0,0,0,1,1,0,1,
+2,3,1,2,1,0,1,1,0,2,2,2,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,1,2,
+1,1,1,1,2,1,1,1,1,1,1,1,1,0,1,1,0,1,0,1,0,1,0,0,1,0,0,0,0,1,0,0,
+2,2,2,2,2,0,0,2,0,0,2,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,2,0,2,2,
+1,1,1,1,1,0,0,1,2,1,1,0,1,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,
+1,2,2,2,2,0,0,2,0,1,1,0,0,0,1,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,1,1,
+0,0,0,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,
+1,2,2,3,2,0,0,1,0,0,1,0,0,0,0,0,0,1,0,2,0,0,0,1,0,0,0,0,0,0,0,2,
+1,1,0,0,1,0,0,0,1,1,0,0,1,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,
+2,1,2,2,2,1,2,1,2,2,1,1,2,1,1,1,0,1,1,1,1,2,0,1,0,1,1,1,1,0,1,1,
+1,1,2,1,1,1,1,1,1,0,0,1,2,1,1,1,1,1,1,0,0,1,1,1,0,0,0,0,0,0,0,0,
+1,0,0,1,3,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2,2,2,2,1,0,0,1,0,2,0,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,2,0,0,1,
+0,2,0,1,0,0,1,1,2,0,1,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
+1,2,2,2,2,0,1,1,0,2,1,0,1,1,1,0,0,1,0,2,0,1,0,0,0,0,0,0,0,0,0,1,
+0,1,0,0,1,0,0,0,1,1,0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,
+2,2,2,2,2,0,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,
+0,1,0,1,1,1,0,0,1,1,1,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,
+2,0,1,0,0,1,2,1,1,1,1,1,1,2,2,1,0,0,1,0,1,0,0,0,0,1,1,1,1,0,0,0,
+1,1,2,1,1,1,1,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2,2,1,2,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,
+0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+1,0,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
+0,1,1,0,1,1,1,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,
+1,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,2,0,0,2,0,1,0,0,1,0,0,1,
+1,1,0,0,1,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,
+1,1,1,1,1,1,1,2,0,0,0,0,0,0,2,1,0,1,1,0,0,1,1,1,0,1,0,0,0,0,0,0,
+2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,1,1,1,1,0,1,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
+)
+
+Latin5BulgarianModel = {
+ 'charToOrderMap': Latin5_BulgarianCharToOrderMap,
+ 'precedenceMatrix': BulgarianLangModel,
+ 'mTypicalPositiveRatio': 0.969392,
+ 'keepEnglishLetter': False,
+ 'charsetName': "ISO-8859-5"
+}
+
+Win1251BulgarianModel = {
+ 'charToOrderMap': win1251BulgarianCharToOrderMap,
+ 'precedenceMatrix': BulgarianLangModel,
+ 'mTypicalPositiveRatio': 0.969392,
+ 'keepEnglishLetter': False,
+ 'charsetName': "windows-1251"
+}
+
+
+# flake8: noqa
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/langcyrillicmodel.py b/app/src/processing/app/i18n/python/requests/packages/charade/langcyrillicmodel.py
index 4b69c821c8b..f0b9af27f71 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/langcyrillicmodel.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/langcyrillicmodel.py
@@ -1,331 +1,331 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is Mozilla Communicator client code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 1998
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-from . import constants
-
-# KOI8-R language model
-# Character Mapping Table:
-KOI8R_CharToOrderMap = (
-255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
-253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
-252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
-253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40
-155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50
-253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60
- 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70
-191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206, # 80
-207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222, # 90
-223,224,225, 68,226,227,228,229,230,231,232,233,234,235,236,237, # a0
-238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253, # b0
- 27, 3, 21, 28, 13, 2, 39, 19, 26, 4, 23, 11, 8, 12, 5, 1, # c0
- 15, 16, 9, 7, 6, 14, 24, 10, 17, 18, 20, 25, 30, 29, 22, 54, # d0
- 59, 37, 44, 58, 41, 48, 53, 46, 55, 42, 60, 36, 49, 38, 31, 34, # e0
- 35, 43, 45, 32, 40, 52, 56, 33, 61, 62, 51, 57, 47, 63, 50, 70, # f0
-)
-
-win1251_CharToOrderMap = (
-255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
-253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
-252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
-253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40
-155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50
-253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60
- 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70
-191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,
-207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,
-223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,
-239,240,241,242,243,244,245,246, 68,247,248,249,250,251,252,253,
- 37, 44, 33, 46, 41, 48, 56, 51, 42, 60, 36, 49, 38, 31, 34, 35,
- 45, 32, 40, 52, 53, 55, 58, 50, 57, 63, 70, 62, 61, 47, 59, 43,
- 3, 21, 10, 19, 13, 2, 24, 20, 4, 23, 11, 8, 12, 5, 1, 15,
- 9, 7, 6, 14, 39, 26, 28, 22, 25, 29, 54, 18, 17, 30, 27, 16,
-)
-
-latin5_CharToOrderMap = (
-255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
-253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
-252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
-253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40
-155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50
-253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60
- 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70
-191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,
-207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,
-223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,
- 37, 44, 33, 46, 41, 48, 56, 51, 42, 60, 36, 49, 38, 31, 34, 35,
- 45, 32, 40, 52, 53, 55, 58, 50, 57, 63, 70, 62, 61, 47, 59, 43,
- 3, 21, 10, 19, 13, 2, 24, 20, 4, 23, 11, 8, 12, 5, 1, 15,
- 9, 7, 6, 14, 39, 26, 28, 22, 25, 29, 54, 18, 17, 30, 27, 16,
-239, 68,240,241,242,243,244,245,246,247,248,249,250,251,252,255,
-)
-
-macCyrillic_CharToOrderMap = (
-255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
-253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
-252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
-253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40
-155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50
-253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60
- 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70
- 37, 44, 33, 46, 41, 48, 56, 51, 42, 60, 36, 49, 38, 31, 34, 35,
- 45, 32, 40, 52, 53, 55, 58, 50, 57, 63, 70, 62, 61, 47, 59, 43,
-191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,
-207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,
-223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,
-239,240,241,242,243,244,245,246,247,248,249,250,251,252, 68, 16,
- 3, 21, 10, 19, 13, 2, 24, 20, 4, 23, 11, 8, 12, 5, 1, 15,
- 9, 7, 6, 14, 39, 26, 28, 22, 25, 29, 54, 18, 17, 30, 27,255,
-)
-
-IBM855_CharToOrderMap = (
-255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
-253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
-252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
-253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40
-155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50
-253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60
- 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70
-191,192,193,194, 68,195,196,197,198,199,200,201,202,203,204,205,
-206,207,208,209,210,211,212,213,214,215,216,217, 27, 59, 54, 70,
- 3, 37, 21, 44, 28, 58, 13, 41, 2, 48, 39, 53, 19, 46,218,219,
-220,221,222,223,224, 26, 55, 4, 42,225,226,227,228, 23, 60,229,
-230,231,232,233,234,235, 11, 36,236,237,238,239,240,241,242,243,
- 8, 49, 12, 38, 5, 31, 1, 34, 15,244,245,246,247, 35, 16,248,
- 43, 9, 45, 7, 32, 6, 40, 14, 52, 24, 56, 10, 33, 17, 61,249,
-250, 18, 62, 20, 51, 25, 57, 30, 47, 29, 63, 22, 50,251,252,255,
-)
-
-IBM866_CharToOrderMap = (
-255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
-253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
-252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
-253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40
-155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50
-253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60
- 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70
- 37, 44, 33, 46, 41, 48, 56, 51, 42, 60, 36, 49, 38, 31, 34, 35,
- 45, 32, 40, 52, 53, 55, 58, 50, 57, 63, 70, 62, 61, 47, 59, 43,
- 3, 21, 10, 19, 13, 2, 24, 20, 4, 23, 11, 8, 12, 5, 1, 15,
-191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,
-207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,
-223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,
- 9, 7, 6, 14, 39, 26, 28, 22, 25, 29, 54, 18, 17, 30, 27, 16,
-239, 68,240,241,242,243,244,245,246,247,248,249,250,251,252,255,
-)
-
-# Model Table:
-# total sequences: 100%
-# first 512 sequences: 97.6601%
-# first 1024 sequences: 2.3389%
-# rest sequences: 0.1237%
-# negative sequences: 0.0009%
-RussianLangModel = (
-0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,1,3,3,3,2,3,2,3,3,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,2,2,2,2,2,0,0,2,
-3,3,3,2,3,3,3,3,3,3,3,3,3,3,2,3,3,0,0,3,3,3,3,3,3,3,3,3,2,3,2,0,
-0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,3,2,2,3,3,3,3,3,3,3,3,3,2,3,3,0,0,3,3,3,3,3,3,3,3,2,3,3,1,0,
-0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,2,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,2,1,
-0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,2,1,
-0,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,3,3,3,3,3,3,2,2,2,3,1,3,3,1,3,3,3,3,2,2,3,0,2,2,2,3,3,2,1,0,
-0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,
-3,3,3,3,3,3,2,3,3,3,3,3,2,2,3,2,3,3,3,2,1,2,2,0,1,2,2,2,2,2,2,0,
-0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,3,0,2,2,3,3,2,1,2,0,
-0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,
-3,3,3,3,3,3,2,3,3,1,2,3,2,2,3,2,3,3,3,3,2,2,3,0,3,2,2,3,1,1,1,0,
-0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,2,3,3,3,3,2,2,2,0,3,3,3,2,2,2,2,0,
-0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,3,3,3,3,3,3,3,3,2,3,2,3,3,3,3,3,3,2,3,2,2,0,1,3,2,1,2,2,1,0,
-0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,
-3,3,3,3,3,3,3,3,3,3,3,2,1,1,3,0,1,1,1,1,2,1,1,0,2,2,2,1,2,0,1,0,
-0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,3,3,3,3,2,3,3,2,2,2,2,1,3,2,3,2,3,2,1,2,2,0,1,1,2,1,2,1,2,0,
-0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,3,3,3,3,3,3,3,3,3,3,2,2,3,2,3,3,3,2,2,2,2,0,2,2,2,2,3,1,1,0,
-0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,
-3,2,3,2,2,3,3,3,3,3,3,3,3,3,1,3,2,0,0,3,3,3,3,2,3,3,3,3,2,3,2,0,
-0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2,3,3,3,3,3,2,2,3,3,0,2,1,0,3,2,3,2,3,0,0,1,2,0,0,1,0,1,2,1,1,0,
-0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,0,3,0,2,3,3,3,3,2,3,3,3,3,1,2,2,0,0,2,3,2,2,2,3,2,3,2,2,3,0,0,
-0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,2,3,0,2,3,2,3,0,1,2,3,3,2,0,2,3,0,0,2,3,2,2,0,1,3,1,3,2,2,1,0,
-0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,1,3,0,2,3,3,3,3,3,3,3,3,2,1,3,2,0,0,2,2,3,3,3,2,3,3,0,2,2,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,3,3,3,3,2,2,3,3,2,2,2,3,3,0,0,1,1,1,1,1,2,0,0,1,1,1,1,0,1,0,
-0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,3,3,3,3,2,2,3,3,3,3,3,3,3,0,3,2,3,3,2,3,2,0,2,1,0,1,1,0,1,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,
-3,3,3,3,3,3,2,3,3,3,2,2,2,2,3,1,3,2,3,1,1,2,1,0,2,2,2,2,1,3,1,0,
-0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,
-2,2,3,3,3,3,3,1,2,2,1,3,1,0,3,0,0,3,0,0,0,1,1,0,1,2,1,0,0,0,0,0,
-0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,2,2,1,1,3,3,3,2,2,1,2,2,3,1,1,2,0,0,2,2,1,3,0,0,2,1,1,2,1,1,0,
-0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,2,3,3,3,3,1,2,2,2,1,2,1,3,3,1,1,2,1,2,1,2,2,0,2,0,0,1,1,0,1,0,
-0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2,3,3,3,3,3,2,1,3,2,2,3,2,0,3,2,0,3,0,1,0,1,1,0,0,1,1,1,1,0,1,0,
-0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,2,3,3,3,2,2,2,3,3,1,2,1,2,1,0,1,0,1,1,0,1,0,0,2,1,1,1,0,1,0,
-0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,
-3,1,1,2,1,2,3,3,2,2,1,2,2,3,0,2,1,0,0,2,2,3,2,1,2,2,2,2,2,3,1,0,
-0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,3,3,3,1,1,0,1,1,2,2,1,1,3,0,0,1,3,1,1,1,0,0,0,1,0,1,1,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2,1,3,3,3,2,0,0,0,2,1,0,1,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2,0,1,0,0,2,3,2,2,2,1,2,2,2,1,2,1,0,0,1,1,1,0,2,0,1,1,1,0,0,1,1,
-1,0,0,0,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,
-2,3,3,3,3,0,0,0,0,1,0,0,0,0,3,0,1,2,1,0,0,0,0,0,0,0,1,1,0,0,1,1,
-1,0,1,0,1,2,0,0,1,1,2,1,0,1,1,1,1,0,1,1,1,1,0,1,0,0,1,0,0,1,1,0,
-2,2,3,2,2,2,3,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,0,1,0,1,1,1,0,2,1,
-1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,1,1,0,1,1,0,
-3,3,3,2,2,2,2,3,2,2,1,1,2,2,2,2,1,1,3,1,2,1,2,0,0,1,1,0,1,0,2,1,
-1,1,1,1,1,2,1,0,1,1,1,1,0,1,0,0,1,1,0,0,1,0,1,0,0,1,0,0,0,1,1,0,
-2,0,0,1,0,3,2,2,2,2,1,2,1,2,1,2,0,0,0,2,1,2,2,1,1,2,2,0,1,1,0,2,
-1,1,1,1,1,0,1,1,1,2,1,1,1,2,1,0,1,2,1,1,1,1,0,1,1,1,0,0,1,0,0,1,
-1,3,2,2,2,1,1,1,2,3,0,0,0,0,2,0,2,2,1,0,0,0,0,0,0,1,0,0,0,0,1,1,
-1,0,1,1,0,1,0,1,1,0,1,1,0,2,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,
-2,3,2,3,2,1,2,2,2,2,1,0,0,0,2,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,2,1,
-1,1,2,1,0,2,0,0,1,0,1,0,0,1,0,0,1,1,0,1,1,0,0,0,0,0,1,0,0,0,0,0,
-3,0,0,1,0,2,2,2,3,2,2,2,2,2,2,2,0,0,0,2,1,2,1,1,1,2,2,0,0,0,1,2,
-1,1,1,1,1,0,1,2,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,1,
-2,3,2,3,3,2,0,1,1,1,0,0,1,0,2,0,1,1,3,1,0,0,0,0,0,0,0,1,0,0,2,1,
-1,1,1,1,1,1,1,0,1,0,1,1,1,1,0,1,1,1,0,0,1,1,0,1,0,0,0,0,0,0,1,0,
-2,3,3,3,3,1,2,2,2,2,0,1,1,0,2,1,1,1,2,1,0,1,1,0,0,1,0,1,0,0,2,0,
-0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2,3,3,3,2,0,0,1,1,2,2,1,0,0,2,0,1,1,3,0,0,1,0,0,0,0,0,1,0,1,2,1,
-1,1,2,0,1,1,1,0,1,0,1,1,0,1,0,1,1,1,1,0,1,0,0,0,0,0,0,1,0,1,1,0,
-1,3,2,3,2,1,0,0,2,2,2,0,1,0,2,0,1,1,1,0,1,0,0,0,3,0,1,1,0,0,2,1,
-1,1,1,0,1,1,0,0,0,0,1,1,0,1,0,0,2,1,1,0,1,0,0,0,1,0,1,0,0,1,1,0,
-3,1,2,1,1,2,2,2,2,2,2,1,2,2,1,1,0,0,0,2,2,2,0,0,0,1,2,1,0,1,0,1,
-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,2,1,1,1,0,1,0,1,1,0,1,1,1,0,0,1,
-3,0,0,0,0,2,0,1,1,1,1,1,1,1,0,1,0,0,0,1,1,1,0,1,0,1,1,0,0,1,0,1,
-1,1,0,0,1,0,0,0,1,0,1,1,0,0,1,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,
-1,3,3,2,2,0,0,0,2,2,0,0,0,1,2,0,1,1,2,0,0,0,0,0,0,0,0,1,0,0,2,1,
-0,1,1,0,0,1,1,0,0,0,1,1,0,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,
-2,3,2,3,2,0,0,0,0,1,1,0,0,0,2,0,2,0,2,0,0,0,0,0,1,0,0,1,0,0,1,1,
-1,1,2,0,1,2,1,0,1,1,2,1,1,1,1,1,2,1,1,0,1,0,0,1,1,1,1,1,0,1,1,0,
-1,3,2,2,2,1,0,0,2,2,1,0,1,2,2,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,1,
-0,0,1,1,0,1,1,0,0,1,1,0,1,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,
-1,0,0,1,0,2,3,1,2,2,2,2,2,2,1,1,0,0,0,1,0,1,0,2,1,1,1,0,0,0,0,1,
-1,1,0,1,1,0,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
-2,0,2,0,0,1,0,3,2,1,2,1,2,2,0,1,0,0,0,2,1,0,0,2,1,1,1,1,0,2,0,2,
-2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,0,1,1,1,1,0,0,0,1,1,1,1,0,1,0,0,1,
-1,2,2,2,2,1,0,0,1,0,0,0,0,0,2,0,1,1,1,1,0,0,0,0,1,0,1,2,0,0,2,0,
-1,0,1,1,1,2,1,0,1,0,1,1,0,0,1,0,1,1,1,0,1,0,0,0,1,0,0,1,0,1,1,0,
-2,1,2,2,2,0,3,0,1,1,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
-0,0,0,1,1,1,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,
-1,2,2,3,2,2,0,0,1,1,2,0,1,2,1,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,
-0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,
-2,2,1,1,2,1,2,2,2,2,2,1,2,2,0,1,0,0,0,1,2,2,2,1,2,1,1,1,1,1,2,1,
-1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,1,1,1,0,0,0,0,1,1,1,0,1,1,0,0,1,
-1,2,2,2,2,0,1,0,2,2,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,
-0,0,1,0,0,1,0,0,0,0,1,0,1,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,
-0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-1,2,2,2,2,0,0,0,2,2,2,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,
-0,1,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-1,2,2,2,2,0,0,0,0,1,0,0,1,1,2,0,0,0,0,1,0,1,0,0,1,0,0,2,0,0,0,1,
-0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,
-1,2,2,2,1,1,2,0,2,1,1,1,1,0,2,2,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,
-0,0,1,0,1,1,0,0,0,0,1,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,
-1,0,2,1,2,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,
-0,0,1,0,1,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,
-1,0,0,0,0,2,0,1,2,1,0,1,1,1,0,1,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1,
-0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,
-2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
-1,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,
-2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
-1,1,1,0,1,0,1,0,0,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,
-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
-1,1,0,1,1,0,1,0,1,0,0,0,0,1,1,0,1,1,0,0,0,0,0,1,0,1,1,0,1,0,0,0,
-0,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,
-)
-
-Koi8rModel = {
- 'charToOrderMap': KOI8R_CharToOrderMap,
- 'precedenceMatrix': RussianLangModel,
- 'mTypicalPositiveRatio': 0.976601,
- 'keepEnglishLetter': False,
- 'charsetName': "KOI8-R"
-}
-
-Win1251CyrillicModel = {
- 'charToOrderMap': win1251_CharToOrderMap,
- 'precedenceMatrix': RussianLangModel,
- 'mTypicalPositiveRatio': 0.976601,
- 'keepEnglishLetter': False,
- 'charsetName': "windows-1251"
-}
-
-Latin5CyrillicModel = {
- 'charToOrderMap': latin5_CharToOrderMap,
- 'precedenceMatrix': RussianLangModel,
- 'mTypicalPositiveRatio': 0.976601,
- 'keepEnglishLetter': False,
- 'charsetName': "ISO-8859-5"
-}
-
-MacCyrillicModel = {
- 'charToOrderMap': macCyrillic_CharToOrderMap,
- 'precedenceMatrix': RussianLangModel,
- 'mTypicalPositiveRatio': 0.976601,
- 'keepEnglishLetter': False,
- 'charsetName': "MacCyrillic"
-};
-
-Ibm866Model = {
- 'charToOrderMap': IBM866_CharToOrderMap,
- 'precedenceMatrix': RussianLangModel,
- 'mTypicalPositiveRatio': 0.976601,
- 'keepEnglishLetter': False,
- 'charsetName': "IBM866"
-}
-
-Ibm855Model = {
- 'charToOrderMap': IBM855_CharToOrderMap,
- 'precedenceMatrix': RussianLangModel,
- 'mTypicalPositiveRatio': 0.976601,
- 'keepEnglishLetter': False,
- 'charsetName': "IBM855"
-}
-
-# flake8: noqa
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is Mozilla Communicator client code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+from . import constants
+
+# KOI8-R language model
+# Character Mapping Table:
+KOI8R_CharToOrderMap = (
+255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
+253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
+252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
+253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40
+155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50
+253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60
+ 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70
+191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206, # 80
+207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222, # 90
+223,224,225, 68,226,227,228,229,230,231,232,233,234,235,236,237, # a0
+238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253, # b0
+ 27, 3, 21, 28, 13, 2, 39, 19, 26, 4, 23, 11, 8, 12, 5, 1, # c0
+ 15, 16, 9, 7, 6, 14, 24, 10, 17, 18, 20, 25, 30, 29, 22, 54, # d0
+ 59, 37, 44, 58, 41, 48, 53, 46, 55, 42, 60, 36, 49, 38, 31, 34, # e0
+ 35, 43, 45, 32, 40, 52, 56, 33, 61, 62, 51, 57, 47, 63, 50, 70, # f0
+)
+
+win1251_CharToOrderMap = (
+255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
+253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
+252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
+253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40
+155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50
+253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60
+ 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70
+191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,
+207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,
+223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,
+239,240,241,242,243,244,245,246, 68,247,248,249,250,251,252,253,
+ 37, 44, 33, 46, 41, 48, 56, 51, 42, 60, 36, 49, 38, 31, 34, 35,
+ 45, 32, 40, 52, 53, 55, 58, 50, 57, 63, 70, 62, 61, 47, 59, 43,
+ 3, 21, 10, 19, 13, 2, 24, 20, 4, 23, 11, 8, 12, 5, 1, 15,
+ 9, 7, 6, 14, 39, 26, 28, 22, 25, 29, 54, 18, 17, 30, 27, 16,
+)
+
+latin5_CharToOrderMap = (
+255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
+253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
+252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
+253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40
+155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50
+253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60
+ 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70
+191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,
+207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,
+223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,
+ 37, 44, 33, 46, 41, 48, 56, 51, 42, 60, 36, 49, 38, 31, 34, 35,
+ 45, 32, 40, 52, 53, 55, 58, 50, 57, 63, 70, 62, 61, 47, 59, 43,
+ 3, 21, 10, 19, 13, 2, 24, 20, 4, 23, 11, 8, 12, 5, 1, 15,
+ 9, 7, 6, 14, 39, 26, 28, 22, 25, 29, 54, 18, 17, 30, 27, 16,
+239, 68,240,241,242,243,244,245,246,247,248,249,250,251,252,255,
+)
+
+macCyrillic_CharToOrderMap = (
+255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
+253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
+252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
+253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40
+155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50
+253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60
+ 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70
+ 37, 44, 33, 46, 41, 48, 56, 51, 42, 60, 36, 49, 38, 31, 34, 35,
+ 45, 32, 40, 52, 53, 55, 58, 50, 57, 63, 70, 62, 61, 47, 59, 43,
+191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,
+207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,
+223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,
+239,240,241,242,243,244,245,246,247,248,249,250,251,252, 68, 16,
+ 3, 21, 10, 19, 13, 2, 24, 20, 4, 23, 11, 8, 12, 5, 1, 15,
+ 9, 7, 6, 14, 39, 26, 28, 22, 25, 29, 54, 18, 17, 30, 27,255,
+)
+
+IBM855_CharToOrderMap = (
+255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
+253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
+252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
+253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40
+155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50
+253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60
+ 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70
+191,192,193,194, 68,195,196,197,198,199,200,201,202,203,204,205,
+206,207,208,209,210,211,212,213,214,215,216,217, 27, 59, 54, 70,
+ 3, 37, 21, 44, 28, 58, 13, 41, 2, 48, 39, 53, 19, 46,218,219,
+220,221,222,223,224, 26, 55, 4, 42,225,226,227,228, 23, 60,229,
+230,231,232,233,234,235, 11, 36,236,237,238,239,240,241,242,243,
+ 8, 49, 12, 38, 5, 31, 1, 34, 15,244,245,246,247, 35, 16,248,
+ 43, 9, 45, 7, 32, 6, 40, 14, 52, 24, 56, 10, 33, 17, 61,249,
+250, 18, 62, 20, 51, 25, 57, 30, 47, 29, 63, 22, 50,251,252,255,
+)
+
+IBM866_CharToOrderMap = (
+255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
+253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
+252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
+253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40
+155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50
+253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60
+ 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70
+ 37, 44, 33, 46, 41, 48, 56, 51, 42, 60, 36, 49, 38, 31, 34, 35,
+ 45, 32, 40, 52, 53, 55, 58, 50, 57, 63, 70, 62, 61, 47, 59, 43,
+ 3, 21, 10, 19, 13, 2, 24, 20, 4, 23, 11, 8, 12, 5, 1, 15,
+191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,
+207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,
+223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,
+ 9, 7, 6, 14, 39, 26, 28, 22, 25, 29, 54, 18, 17, 30, 27, 16,
+239, 68,240,241,242,243,244,245,246,247,248,249,250,251,252,255,
+)
+
+# Model Table:
+# total sequences: 100%
+# first 512 sequences: 97.6601%
+# first 1024 sequences: 2.3389%
+# rest sequences: 0.1237%
+# negative sequences: 0.0009%
+RussianLangModel = (
+0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,1,3,3,3,2,3,2,3,3,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,2,2,2,2,2,0,0,2,
+3,3,3,2,3,3,3,3,3,3,3,3,3,3,2,3,3,0,0,3,3,3,3,3,3,3,3,3,2,3,2,0,
+0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,3,2,2,3,3,3,3,3,3,3,3,3,2,3,3,0,0,3,3,3,3,3,3,3,3,2,3,3,1,0,
+0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,2,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,2,1,
+0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,2,1,
+0,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,3,3,3,3,3,3,2,2,2,3,1,3,3,1,3,3,3,3,2,2,3,0,2,2,2,3,3,2,1,0,
+0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,
+3,3,3,3,3,3,2,3,3,3,3,3,2,2,3,2,3,3,3,2,1,2,2,0,1,2,2,2,2,2,2,0,
+0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,3,0,2,2,3,3,2,1,2,0,
+0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,
+3,3,3,3,3,3,2,3,3,1,2,3,2,2,3,2,3,3,3,3,2,2,3,0,3,2,2,3,1,1,1,0,
+0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,2,3,3,3,3,2,2,2,0,3,3,3,2,2,2,2,0,
+0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,3,3,3,3,3,3,3,3,2,3,2,3,3,3,3,3,3,2,3,2,2,0,1,3,2,1,2,2,1,0,
+0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,
+3,3,3,3,3,3,3,3,3,3,3,2,1,1,3,0,1,1,1,1,2,1,1,0,2,2,2,1,2,0,1,0,
+0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,3,3,3,3,2,3,3,2,2,2,2,1,3,2,3,2,3,2,1,2,2,0,1,1,2,1,2,1,2,0,
+0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,3,3,3,3,3,3,3,3,3,3,2,2,3,2,3,3,3,2,2,2,2,0,2,2,2,2,3,1,1,0,
+0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,
+3,2,3,2,2,3,3,3,3,3,3,3,3,3,1,3,2,0,0,3,3,3,3,2,3,3,3,3,2,3,2,0,
+0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2,3,3,3,3,3,2,2,3,3,0,2,1,0,3,2,3,2,3,0,0,1,2,0,0,1,0,1,2,1,1,0,
+0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,0,3,0,2,3,3,3,3,2,3,3,3,3,1,2,2,0,0,2,3,2,2,2,3,2,3,2,2,3,0,0,
+0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,2,3,0,2,3,2,3,0,1,2,3,3,2,0,2,3,0,0,2,3,2,2,0,1,3,1,3,2,2,1,0,
+0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,1,3,0,2,3,3,3,3,3,3,3,3,2,1,3,2,0,0,2,2,3,3,3,2,3,3,0,2,2,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,3,3,3,3,2,2,3,3,2,2,2,3,3,0,0,1,1,1,1,1,2,0,0,1,1,1,1,0,1,0,
+0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,3,3,3,3,2,2,3,3,3,3,3,3,3,0,3,2,3,3,2,3,2,0,2,1,0,1,1,0,1,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,
+3,3,3,3,3,3,2,3,3,3,2,2,2,2,3,1,3,2,3,1,1,2,1,0,2,2,2,2,1,3,1,0,
+0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,
+2,2,3,3,3,3,3,1,2,2,1,3,1,0,3,0,0,3,0,0,0,1,1,0,1,2,1,0,0,0,0,0,
+0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,2,2,1,1,3,3,3,2,2,1,2,2,3,1,1,2,0,0,2,2,1,3,0,0,2,1,1,2,1,1,0,
+0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,2,3,3,3,3,1,2,2,2,1,2,1,3,3,1,1,2,1,2,1,2,2,0,2,0,0,1,1,0,1,0,
+0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2,3,3,3,3,3,2,1,3,2,2,3,2,0,3,2,0,3,0,1,0,1,1,0,0,1,1,1,1,0,1,0,
+0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,2,3,3,3,2,2,2,3,3,1,2,1,2,1,0,1,0,1,1,0,1,0,0,2,1,1,1,0,1,0,
+0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,
+3,1,1,2,1,2,3,3,2,2,1,2,2,3,0,2,1,0,0,2,2,3,2,1,2,2,2,2,2,3,1,0,
+0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,3,3,3,1,1,0,1,1,2,2,1,1,3,0,0,1,3,1,1,1,0,0,0,1,0,1,1,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2,1,3,3,3,2,0,0,0,2,1,0,1,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2,0,1,0,0,2,3,2,2,2,1,2,2,2,1,2,1,0,0,1,1,1,0,2,0,1,1,1,0,0,1,1,
+1,0,0,0,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,
+2,3,3,3,3,0,0,0,0,1,0,0,0,0,3,0,1,2,1,0,0,0,0,0,0,0,1,1,0,0,1,1,
+1,0,1,0,1,2,0,0,1,1,2,1,0,1,1,1,1,0,1,1,1,1,0,1,0,0,1,0,0,1,1,0,
+2,2,3,2,2,2,3,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,0,1,0,1,1,1,0,2,1,
+1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,1,1,0,1,1,0,
+3,3,3,2,2,2,2,3,2,2,1,1,2,2,2,2,1,1,3,1,2,1,2,0,0,1,1,0,1,0,2,1,
+1,1,1,1,1,2,1,0,1,1,1,1,0,1,0,0,1,1,0,0,1,0,1,0,0,1,0,0,0,1,1,0,
+2,0,0,1,0,3,2,2,2,2,1,2,1,2,1,2,0,0,0,2,1,2,2,1,1,2,2,0,1,1,0,2,
+1,1,1,1,1,0,1,1,1,2,1,1,1,2,1,0,1,2,1,1,1,1,0,1,1,1,0,0,1,0,0,1,
+1,3,2,2,2,1,1,1,2,3,0,0,0,0,2,0,2,2,1,0,0,0,0,0,0,1,0,0,0,0,1,1,
+1,0,1,1,0,1,0,1,1,0,1,1,0,2,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,
+2,3,2,3,2,1,2,2,2,2,1,0,0,0,2,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,2,1,
+1,1,2,1,0,2,0,0,1,0,1,0,0,1,0,0,1,1,0,1,1,0,0,0,0,0,1,0,0,0,0,0,
+3,0,0,1,0,2,2,2,3,2,2,2,2,2,2,2,0,0,0,2,1,2,1,1,1,2,2,0,0,0,1,2,
+1,1,1,1,1,0,1,2,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,1,
+2,3,2,3,3,2,0,1,1,1,0,0,1,0,2,0,1,1,3,1,0,0,0,0,0,0,0,1,0,0,2,1,
+1,1,1,1,1,1,1,0,1,0,1,1,1,1,0,1,1,1,0,0,1,1,0,1,0,0,0,0,0,0,1,0,
+2,3,3,3,3,1,2,2,2,2,0,1,1,0,2,1,1,1,2,1,0,1,1,0,0,1,0,1,0,0,2,0,
+0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2,3,3,3,2,0,0,1,1,2,2,1,0,0,2,0,1,1,3,0,0,1,0,0,0,0,0,1,0,1,2,1,
+1,1,2,0,1,1,1,0,1,0,1,1,0,1,0,1,1,1,1,0,1,0,0,0,0,0,0,1,0,1,1,0,
+1,3,2,3,2,1,0,0,2,2,2,0,1,0,2,0,1,1,1,0,1,0,0,0,3,0,1,1,0,0,2,1,
+1,1,1,0,1,1,0,0,0,0,1,1,0,1,0,0,2,1,1,0,1,0,0,0,1,0,1,0,0,1,1,0,
+3,1,2,1,1,2,2,2,2,2,2,1,2,2,1,1,0,0,0,2,2,2,0,0,0,1,2,1,0,1,0,1,
+2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,2,1,1,1,0,1,0,1,1,0,1,1,1,0,0,1,
+3,0,0,0,0,2,0,1,1,1,1,1,1,1,0,1,0,0,0,1,1,1,0,1,0,1,1,0,0,1,0,1,
+1,1,0,0,1,0,0,0,1,0,1,1,0,0,1,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,
+1,3,3,2,2,0,0,0,2,2,0,0,0,1,2,0,1,1,2,0,0,0,0,0,0,0,0,1,0,0,2,1,
+0,1,1,0,0,1,1,0,0,0,1,1,0,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,
+2,3,2,3,2,0,0,0,0,1,1,0,0,0,2,0,2,0,2,0,0,0,0,0,1,0,0,1,0,0,1,1,
+1,1,2,0,1,2,1,0,1,1,2,1,1,1,1,1,2,1,1,0,1,0,0,1,1,1,1,1,0,1,1,0,
+1,3,2,2,2,1,0,0,2,2,1,0,1,2,2,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,1,
+0,0,1,1,0,1,1,0,0,1,1,0,1,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,
+1,0,0,1,0,2,3,1,2,2,2,2,2,2,1,1,0,0,0,1,0,1,0,2,1,1,1,0,0,0,0,1,
+1,1,0,1,1,0,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
+2,0,2,0,0,1,0,3,2,1,2,1,2,2,0,1,0,0,0,2,1,0,0,2,1,1,1,1,0,2,0,2,
+2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,0,1,1,1,1,0,0,0,1,1,1,1,0,1,0,0,1,
+1,2,2,2,2,1,0,0,1,0,0,0,0,0,2,0,1,1,1,1,0,0,0,0,1,0,1,2,0,0,2,0,
+1,0,1,1,1,2,1,0,1,0,1,1,0,0,1,0,1,1,1,0,1,0,0,0,1,0,0,1,0,1,1,0,
+2,1,2,2,2,0,3,0,1,1,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
+0,0,0,1,1,1,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,
+1,2,2,3,2,2,0,0,1,1,2,0,1,2,1,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,
+0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,
+2,2,1,1,2,1,2,2,2,2,2,1,2,2,0,1,0,0,0,1,2,2,2,1,2,1,1,1,1,1,2,1,
+1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,1,1,1,0,0,0,0,1,1,1,0,1,1,0,0,1,
+1,2,2,2,2,0,1,0,2,2,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,
+0,0,1,0,0,1,0,0,0,0,1,0,1,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,
+0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+1,2,2,2,2,0,0,0,2,2,2,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,
+0,1,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+1,2,2,2,2,0,0,0,0,1,0,0,1,1,2,0,0,0,0,1,0,1,0,0,1,0,0,2,0,0,0,1,
+0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,
+1,2,2,2,1,1,2,0,2,1,1,1,1,0,2,2,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,
+0,0,1,0,1,1,0,0,0,0,1,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,
+1,0,2,1,2,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,
+0,0,1,0,1,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,
+1,0,0,0,0,2,0,1,2,1,0,1,1,1,0,1,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1,
+0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,
+2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
+1,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,
+2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
+1,1,1,0,1,0,1,0,0,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,
+1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
+1,1,0,1,1,0,1,0,1,0,0,0,0,1,1,0,1,1,0,0,0,0,0,1,0,1,1,0,1,0,0,0,
+0,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,
+)
+
+Koi8rModel = {
+ 'charToOrderMap': KOI8R_CharToOrderMap,
+ 'precedenceMatrix': RussianLangModel,
+ 'mTypicalPositiveRatio': 0.976601,
+ 'keepEnglishLetter': False,
+ 'charsetName': "KOI8-R"
+}
+
+Win1251CyrillicModel = {
+ 'charToOrderMap': win1251_CharToOrderMap,
+ 'precedenceMatrix': RussianLangModel,
+ 'mTypicalPositiveRatio': 0.976601,
+ 'keepEnglishLetter': False,
+ 'charsetName': "windows-1251"
+}
+
+Latin5CyrillicModel = {
+ 'charToOrderMap': latin5_CharToOrderMap,
+ 'precedenceMatrix': RussianLangModel,
+ 'mTypicalPositiveRatio': 0.976601,
+ 'keepEnglishLetter': False,
+ 'charsetName': "ISO-8859-5"
+}
+
+MacCyrillicModel = {
+ 'charToOrderMap': macCyrillic_CharToOrderMap,
+ 'precedenceMatrix': RussianLangModel,
+ 'mTypicalPositiveRatio': 0.976601,
+ 'keepEnglishLetter': False,
+ 'charsetName': "MacCyrillic"
+};
+
+Ibm866Model = {
+ 'charToOrderMap': IBM866_CharToOrderMap,
+ 'precedenceMatrix': RussianLangModel,
+ 'mTypicalPositiveRatio': 0.976601,
+ 'keepEnglishLetter': False,
+ 'charsetName': "IBM866"
+}
+
+Ibm855Model = {
+ 'charToOrderMap': IBM855_CharToOrderMap,
+ 'precedenceMatrix': RussianLangModel,
+ 'mTypicalPositiveRatio': 0.976601,
+ 'keepEnglishLetter': False,
+ 'charsetName': "IBM855"
+}
+
+# flake8: noqa
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/langgreekmodel.py b/app/src/processing/app/i18n/python/requests/packages/charade/langgreekmodel.py
index 78e9ce60106..891fe3420dc 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/langgreekmodel.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/langgreekmodel.py
@@ -1,227 +1,227 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is Mozilla Communicator client code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 1998
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-from . import constants
-
-# 255: Control characters that usually does not exist in any text
-# 254: Carriage/Return
-# 253: symbol (punctuation) that does not belong to word
-# 252: 0 - 9
-
-# Character Mapping Table:
-Latin7_CharToOrderMap = (
-255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
-253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
-252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
-253, 82,100,104, 94, 98,101,116,102,111,187,117, 92, 88,113, 85, # 40
- 79,118,105, 83, 67,114,119, 95, 99,109,188,253,253,253,253,253, # 50
-253, 72, 70, 80, 81, 60, 96, 93, 89, 68,120, 97, 77, 86, 69, 55, # 60
- 78,115, 65, 66, 58, 76,106,103, 87,107,112,253,253,253,253,253, # 70
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 80
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 90
-253,233, 90,253,253,253,253,253,253,253,253,253,253, 74,253,253, # a0
-253,253,253,253,247,248, 61, 36, 46, 71, 73,253, 54,253,108,123, # b0
-110, 31, 51, 43, 41, 34, 91, 40, 52, 47, 44, 53, 38, 49, 59, 39, # c0
- 35, 48,250, 37, 33, 45, 56, 50, 84, 57,120,121, 17, 18, 22, 15, # d0
-124, 1, 29, 20, 21, 3, 32, 13, 25, 5, 11, 16, 10, 6, 30, 4, # e0
- 9, 8, 14, 7, 2, 12, 28, 23, 42, 24, 64, 75, 19, 26, 27,253, # f0
-)
-
-win1253_CharToOrderMap = (
-255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
-253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
-252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
-253, 82,100,104, 94, 98,101,116,102,111,187,117, 92, 88,113, 85, # 40
- 79,118,105, 83, 67,114,119, 95, 99,109,188,253,253,253,253,253, # 50
-253, 72, 70, 80, 81, 60, 96, 93, 89, 68,120, 97, 77, 86, 69, 55, # 60
- 78,115, 65, 66, 58, 76,106,103, 87,107,112,253,253,253,253,253, # 70
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 80
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 90
-253,233, 61,253,253,253,253,253,253,253,253,253,253, 74,253,253, # a0
-253,253,253,253,247,253,253, 36, 46, 71, 73,253, 54,253,108,123, # b0
-110, 31, 51, 43, 41, 34, 91, 40, 52, 47, 44, 53, 38, 49, 59, 39, # c0
- 35, 48,250, 37, 33, 45, 56, 50, 84, 57,120,121, 17, 18, 22, 15, # d0
-124, 1, 29, 20, 21, 3, 32, 13, 25, 5, 11, 16, 10, 6, 30, 4, # e0
- 9, 8, 14, 7, 2, 12, 28, 23, 42, 24, 64, 75, 19, 26, 27,253, # f0
-)
-
-# Model Table:
-# total sequences: 100%
-# first 512 sequences: 98.2851%
-# first 1024 sequences:1.7001%
-# rest sequences: 0.0359%
-# negative sequences: 0.0148%
-GreekLangModel = (
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,3,2,2,3,3,3,3,3,3,3,3,1,3,3,3,0,2,2,3,3,0,3,0,3,2,0,3,3,3,0,
-3,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,3,3,3,3,3,0,3,3,0,3,2,3,3,0,3,2,3,3,3,0,0,3,0,3,0,3,3,2,0,0,0,
-2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,
-0,2,3,2,2,3,3,3,3,3,3,3,3,0,3,3,3,3,0,2,3,3,0,3,3,3,3,2,3,3,3,0,
-2,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,2,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,0,2,1,3,3,3,3,2,3,3,2,3,3,2,0,
-0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,3,3,3,3,0,3,3,3,3,3,3,0,3,3,0,3,3,3,3,3,3,3,3,3,3,0,3,2,3,3,0,
-2,0,1,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
-0,3,3,3,3,3,2,3,0,0,0,0,3,3,0,3,1,3,3,3,0,3,3,0,3,3,3,3,0,0,0,0,
-2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,3,3,3,3,3,0,3,0,3,3,3,3,3,0,3,2,2,2,3,0,2,3,3,3,3,3,2,3,3,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,3,3,3,3,3,3,2,2,2,3,3,3,3,0,3,1,3,3,3,3,2,3,3,3,3,3,3,3,2,2,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,3,3,3,3,3,2,0,3,0,0,0,3,3,2,3,3,3,3,3,0,0,3,2,3,0,2,3,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,3,0,3,3,3,3,0,0,3,3,0,2,3,0,3,0,3,3,3,0,0,3,0,3,0,2,2,3,3,0,0,
-0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,3,3,3,3,3,2,0,3,2,3,3,3,3,0,3,3,3,3,3,0,3,3,2,3,2,3,3,2,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,3,3,2,3,2,3,3,3,3,3,3,0,2,3,2,3,2,2,2,3,2,3,3,2,3,0,2,2,2,3,0,
-2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,3,0,0,0,3,3,3,2,3,3,0,0,3,0,3,0,0,0,3,2,0,3,0,3,0,0,2,0,2,0,
-0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,3,3,3,3,0,3,3,3,3,3,3,0,3,3,0,3,0,0,0,3,3,0,3,3,3,0,0,1,2,3,0,
-3,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,3,3,3,3,3,2,0,0,3,2,2,3,3,0,3,3,3,3,3,2,1,3,0,3,2,3,3,2,1,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,3,3,0,2,3,3,3,3,3,3,0,0,3,0,3,0,0,0,3,3,0,3,2,3,0,0,3,3,3,0,
-3,0,0,0,2,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,3,3,3,3,0,3,3,3,3,3,3,0,0,3,0,3,0,0,0,3,2,0,3,2,3,0,0,3,2,3,0,
-2,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,3,1,2,2,3,3,3,3,3,3,0,2,3,0,3,0,0,0,3,3,0,3,0,2,0,0,2,3,1,0,
-2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,3,0,3,3,3,3,0,3,0,3,3,2,3,0,3,3,3,3,3,3,0,3,3,3,0,2,3,0,0,3,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,3,0,3,3,3,0,0,3,0,0,0,3,3,0,3,0,2,3,3,0,0,3,0,3,0,3,3,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,3,0,0,0,3,3,3,3,3,3,0,0,3,0,2,0,0,0,3,3,0,3,0,3,0,0,2,0,2,0,
-0,0,0,0,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,3,3,3,3,3,3,0,3,0,2,0,3,2,0,3,2,3,2,3,0,0,3,2,3,2,3,3,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,3,0,0,2,3,3,3,3,3,0,0,0,3,0,2,1,0,0,3,2,2,2,0,3,0,0,2,2,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,3,0,3,3,3,2,0,3,0,3,0,3,3,0,2,1,2,3,3,0,0,3,0,3,0,3,3,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,2,3,3,3,0,3,3,3,3,3,3,0,2,3,0,3,0,0,0,2,1,0,2,2,3,0,0,2,2,2,0,
-0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,3,0,0,2,3,3,3,2,3,0,0,1,3,0,2,0,0,0,0,3,0,1,0,2,0,0,1,1,1,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,3,3,3,3,3,1,0,3,0,0,0,3,2,0,3,2,3,3,3,0,0,3,0,3,2,2,2,1,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,3,0,3,3,3,0,0,3,0,0,0,0,2,0,2,3,3,2,2,2,2,3,0,2,0,2,2,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,3,3,3,3,2,0,0,0,0,0,0,2,3,0,2,0,2,3,2,0,0,3,0,3,0,3,1,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,3,2,3,3,2,2,3,0,2,0,3,0,0,0,2,0,0,0,0,1,2,0,2,0,2,0,
-0,2,0,2,0,2,2,0,0,1,0,2,2,2,0,2,2,2,0,2,2,2,0,0,2,0,0,1,0,0,0,0,
-0,2,0,3,3,2,0,0,0,0,0,0,1,3,0,2,0,2,2,2,0,0,2,0,3,0,0,2,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,3,0,2,3,2,0,2,2,0,2,0,2,2,0,2,0,2,2,2,0,0,0,0,0,0,2,3,0,0,0,2,
-0,1,2,0,0,0,0,2,2,0,0,0,2,1,0,2,2,0,0,0,0,0,0,1,0,2,0,0,0,0,0,0,
-0,0,2,1,0,2,3,2,2,3,2,3,2,0,0,3,3,3,0,0,3,2,0,0,0,1,1,0,2,0,2,2,
-0,2,0,2,0,2,2,0,0,2,0,2,2,2,0,2,2,2,2,0,0,2,0,0,0,2,0,1,0,0,0,0,
-0,3,0,3,3,2,2,0,3,0,0,0,2,2,0,2,2,2,1,2,0,0,1,2,2,0,0,3,0,0,0,2,
-0,1,2,0,0,0,1,2,0,0,0,0,0,0,0,2,2,0,1,0,0,2,0,0,0,2,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,2,3,3,2,2,0,0,0,2,0,2,3,3,0,2,0,0,0,0,0,0,2,2,2,0,2,2,0,2,0,2,
-0,2,2,0,0,2,2,2,2,1,0,0,2,2,0,2,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,
-0,2,0,3,2,3,0,0,0,3,0,0,2,2,0,2,0,2,2,2,0,0,2,0,0,0,0,0,0,0,0,2,
-0,0,2,2,0,0,2,2,2,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,2,0,0,3,2,0,2,2,2,2,2,0,0,0,2,0,0,0,0,2,0,1,0,0,2,0,1,0,0,0,
-0,2,2,2,0,2,2,0,1,2,0,2,2,2,0,2,2,2,2,1,2,2,0,0,2,0,0,0,0,0,0,0,
-0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
-0,2,0,2,0,2,2,0,0,0,0,1,2,1,0,0,2,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,3,2,3,0,0,2,0,0,0,2,2,0,2,0,0,0,1,0,0,2,0,2,0,2,2,0,0,0,0,
-0,0,2,0,0,0,0,2,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,
-0,2,2,3,2,2,0,0,0,0,0,0,1,3,0,2,0,2,2,0,0,0,1,0,2,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,2,0,2,0,3,2,0,2,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
-0,0,2,0,0,0,0,1,1,0,0,2,1,2,0,2,2,0,1,0,0,1,0,0,0,2,0,0,0,0,0,0,
-0,3,0,2,2,2,0,0,2,0,0,0,2,0,0,0,2,3,0,2,0,0,0,0,0,0,2,2,0,0,0,2,
-0,1,2,0,0,0,1,2,2,1,0,0,0,2,0,0,2,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,2,1,2,0,2,2,0,2,0,0,2,0,0,0,0,1,2,1,0,2,1,0,0,0,0,0,0,0,0,0,0,
-0,0,2,0,0,0,3,1,2,2,0,2,0,0,0,0,2,0,0,0,2,0,0,3,0,0,0,0,2,2,2,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,2,1,0,2,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0,2,
-0,2,2,0,0,2,2,2,2,2,0,1,2,0,0,0,2,2,0,1,0,2,0,0,2,2,0,0,0,0,0,0,
-0,0,0,0,1,0,0,0,0,0,0,0,3,0,0,2,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,2,
-0,1,2,0,0,0,0,2,2,1,0,1,0,1,0,2,2,2,1,0,0,0,0,0,0,1,0,0,0,0,0,0,
-0,2,0,1,2,0,0,0,0,0,0,0,0,0,0,2,0,0,2,2,0,0,0,0,1,0,0,0,0,0,0,2,
-0,2,2,0,0,0,0,2,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,
-0,2,2,2,2,0,0,0,3,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,1,
-0,0,2,0,0,0,0,1,2,0,0,0,0,0,0,2,2,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,
-0,2,0,2,2,2,0,0,2,0,0,0,0,0,0,0,2,2,2,0,0,0,2,0,0,0,0,0,0,0,0,2,
-0,0,1,0,0,0,0,2,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,
-0,3,0,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,2,
-0,0,2,0,0,0,0,2,2,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,2,0,2,2,1,0,0,0,0,0,0,2,0,0,2,0,2,2,2,0,0,0,0,0,0,2,0,0,0,0,2,
-0,0,2,0,0,2,0,2,2,0,0,0,0,2,0,2,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,
-0,0,3,0,0,0,2,2,0,2,2,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,0,0,
-0,2,2,2,2,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,
-0,0,0,0,0,0,0,2,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,2,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
-0,2,0,0,0,2,0,0,0,0,0,1,0,0,0,0,2,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,2,0,0,0,
-0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,2,0,2,0,0,0,
-0,0,0,0,0,0,0,0,2,1,0,0,0,0,0,0,2,0,0,0,1,2,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-)
-
-Latin7GreekModel = {
- 'charToOrderMap': Latin7_CharToOrderMap,
- 'precedenceMatrix': GreekLangModel,
- 'mTypicalPositiveRatio': 0.982851,
- 'keepEnglishLetter': False,
- 'charsetName': "ISO-8859-7"
-}
-
-Win1253GreekModel = {
- 'charToOrderMap': win1253_CharToOrderMap,
- 'precedenceMatrix': GreekLangModel,
- 'mTypicalPositiveRatio': 0.982851,
- 'keepEnglishLetter': False,
- 'charsetName': "windows-1253"
-}
-
-# flake8: noqa
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is Mozilla Communicator client code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+from . import constants
+
+# 255: Control characters that usually does not exist in any text
+# 254: Carriage/Return
+# 253: symbol (punctuation) that does not belong to word
+# 252: 0 - 9
+
+# Character Mapping Table:
+Latin7_CharToOrderMap = (
+255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
+253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
+252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
+253, 82,100,104, 94, 98,101,116,102,111,187,117, 92, 88,113, 85, # 40
+ 79,118,105, 83, 67,114,119, 95, 99,109,188,253,253,253,253,253, # 50
+253, 72, 70, 80, 81, 60, 96, 93, 89, 68,120, 97, 77, 86, 69, 55, # 60
+ 78,115, 65, 66, 58, 76,106,103, 87,107,112,253,253,253,253,253, # 70
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 80
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 90
+253,233, 90,253,253,253,253,253,253,253,253,253,253, 74,253,253, # a0
+253,253,253,253,247,248, 61, 36, 46, 71, 73,253, 54,253,108,123, # b0
+110, 31, 51, 43, 41, 34, 91, 40, 52, 47, 44, 53, 38, 49, 59, 39, # c0
+ 35, 48,250, 37, 33, 45, 56, 50, 84, 57,120,121, 17, 18, 22, 15, # d0
+124, 1, 29, 20, 21, 3, 32, 13, 25, 5, 11, 16, 10, 6, 30, 4, # e0
+ 9, 8, 14, 7, 2, 12, 28, 23, 42, 24, 64, 75, 19, 26, 27,253, # f0
+)
+
+win1253_CharToOrderMap = (
+255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
+253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
+252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
+253, 82,100,104, 94, 98,101,116,102,111,187,117, 92, 88,113, 85, # 40
+ 79,118,105, 83, 67,114,119, 95, 99,109,188,253,253,253,253,253, # 50
+253, 72, 70, 80, 81, 60, 96, 93, 89, 68,120, 97, 77, 86, 69, 55, # 60
+ 78,115, 65, 66, 58, 76,106,103, 87,107,112,253,253,253,253,253, # 70
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 80
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 90
+253,233, 61,253,253,253,253,253,253,253,253,253,253, 74,253,253, # a0
+253,253,253,253,247,253,253, 36, 46, 71, 73,253, 54,253,108,123, # b0
+110, 31, 51, 43, 41, 34, 91, 40, 52, 47, 44, 53, 38, 49, 59, 39, # c0
+ 35, 48,250, 37, 33, 45, 56, 50, 84, 57,120,121, 17, 18, 22, 15, # d0
+124, 1, 29, 20, 21, 3, 32, 13, 25, 5, 11, 16, 10, 6, 30, 4, # e0
+ 9, 8, 14, 7, 2, 12, 28, 23, 42, 24, 64, 75, 19, 26, 27,253, # f0
+)
+
+# Model Table:
+# total sequences: 100%
+# first 512 sequences: 98.2851%
+# first 1024 sequences:1.7001%
+# rest sequences: 0.0359%
+# negative sequences: 0.0148%
+GreekLangModel = (
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,3,2,2,3,3,3,3,3,3,3,3,1,3,3,3,0,2,2,3,3,0,3,0,3,2,0,3,3,3,0,
+3,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,3,3,3,3,3,0,3,3,0,3,2,3,3,0,3,2,3,3,3,0,0,3,0,3,0,3,3,2,0,0,0,
+2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,
+0,2,3,2,2,3,3,3,3,3,3,3,3,0,3,3,3,3,0,2,3,3,0,3,3,3,3,2,3,3,3,0,
+2,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,2,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,0,2,1,3,3,3,3,2,3,3,2,3,3,2,0,
+0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,3,3,3,3,0,3,3,3,3,3,3,0,3,3,0,3,3,3,3,3,3,3,3,3,3,0,3,2,3,3,0,
+2,0,1,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
+0,3,3,3,3,3,2,3,0,0,0,0,3,3,0,3,1,3,3,3,0,3,3,0,3,3,3,3,0,0,0,0,
+2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,3,3,3,3,3,0,3,0,3,3,3,3,3,0,3,2,2,2,3,0,2,3,3,3,3,3,2,3,3,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,3,3,3,3,3,3,2,2,2,3,3,3,3,0,3,1,3,3,3,3,2,3,3,3,3,3,3,3,2,2,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,3,3,3,3,3,2,0,3,0,0,0,3,3,2,3,3,3,3,3,0,0,3,2,3,0,2,3,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,3,0,3,3,3,3,0,0,3,3,0,2,3,0,3,0,3,3,3,0,0,3,0,3,0,2,2,3,3,0,0,
+0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,3,3,3,3,3,2,0,3,2,3,3,3,3,0,3,3,3,3,3,0,3,3,2,3,2,3,3,2,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,3,3,2,3,2,3,3,3,3,3,3,0,2,3,2,3,2,2,2,3,2,3,3,2,3,0,2,2,2,3,0,
+2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,3,0,0,0,3,3,3,2,3,3,0,0,3,0,3,0,0,0,3,2,0,3,0,3,0,0,2,0,2,0,
+0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,3,3,3,3,0,3,3,3,3,3,3,0,3,3,0,3,0,0,0,3,3,0,3,3,3,0,0,1,2,3,0,
+3,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,3,3,3,3,3,2,0,0,3,2,2,3,3,0,3,3,3,3,3,2,1,3,0,3,2,3,3,2,1,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,3,3,0,2,3,3,3,3,3,3,0,0,3,0,3,0,0,0,3,3,0,3,2,3,0,0,3,3,3,0,
+3,0,0,0,2,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,3,3,3,3,0,3,3,3,3,3,3,0,0,3,0,3,0,0,0,3,2,0,3,2,3,0,0,3,2,3,0,
+2,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,3,1,2,2,3,3,3,3,3,3,0,2,3,0,3,0,0,0,3,3,0,3,0,2,0,0,2,3,1,0,
+2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,3,0,3,3,3,3,0,3,0,3,3,2,3,0,3,3,3,3,3,3,0,3,3,3,0,2,3,0,0,3,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,3,0,3,3,3,0,0,3,0,0,0,3,3,0,3,0,2,3,3,0,0,3,0,3,0,3,3,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,3,0,0,0,3,3,3,3,3,3,0,0,3,0,2,0,0,0,3,3,0,3,0,3,0,0,2,0,2,0,
+0,0,0,0,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,3,3,3,3,3,3,0,3,0,2,0,3,2,0,3,2,3,2,3,0,0,3,2,3,2,3,3,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,3,0,0,2,3,3,3,3,3,0,0,0,3,0,2,1,0,0,3,2,2,2,0,3,0,0,2,2,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,3,0,3,3,3,2,0,3,0,3,0,3,3,0,2,1,2,3,3,0,0,3,0,3,0,3,3,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,2,3,3,3,0,3,3,3,3,3,3,0,2,3,0,3,0,0,0,2,1,0,2,2,3,0,0,2,2,2,0,
+0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,3,0,0,2,3,3,3,2,3,0,0,1,3,0,2,0,0,0,0,3,0,1,0,2,0,0,1,1,1,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,3,3,3,3,3,1,0,3,0,0,0,3,2,0,3,2,3,3,3,0,0,3,0,3,2,2,2,1,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,3,0,3,3,3,0,0,3,0,0,0,0,2,0,2,3,3,2,2,2,2,3,0,2,0,2,2,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,3,3,3,3,2,0,0,0,0,0,0,2,3,0,2,0,2,3,2,0,0,3,0,3,0,3,1,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,3,2,3,3,2,2,3,0,2,0,3,0,0,0,2,0,0,0,0,1,2,0,2,0,2,0,
+0,2,0,2,0,2,2,0,0,1,0,2,2,2,0,2,2,2,0,2,2,2,0,0,2,0,0,1,0,0,0,0,
+0,2,0,3,3,2,0,0,0,0,0,0,1,3,0,2,0,2,2,2,0,0,2,0,3,0,0,2,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,3,0,2,3,2,0,2,2,0,2,0,2,2,0,2,0,2,2,2,0,0,0,0,0,0,2,3,0,0,0,2,
+0,1,2,0,0,0,0,2,2,0,0,0,2,1,0,2,2,0,0,0,0,0,0,1,0,2,0,0,0,0,0,0,
+0,0,2,1,0,2,3,2,2,3,2,3,2,0,0,3,3,3,0,0,3,2,0,0,0,1,1,0,2,0,2,2,
+0,2,0,2,0,2,2,0,0,2,0,2,2,2,0,2,2,2,2,0,0,2,0,0,0,2,0,1,0,0,0,0,
+0,3,0,3,3,2,2,0,3,0,0,0,2,2,0,2,2,2,1,2,0,0,1,2,2,0,0,3,0,0,0,2,
+0,1,2,0,0,0,1,2,0,0,0,0,0,0,0,2,2,0,1,0,0,2,0,0,0,2,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,2,3,3,2,2,0,0,0,2,0,2,3,3,0,2,0,0,0,0,0,0,2,2,2,0,2,2,0,2,0,2,
+0,2,2,0,0,2,2,2,2,1,0,0,2,2,0,2,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,
+0,2,0,3,2,3,0,0,0,3,0,0,2,2,0,2,0,2,2,2,0,0,2,0,0,0,0,0,0,0,0,2,
+0,0,2,2,0,0,2,2,2,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,2,0,0,3,2,0,2,2,2,2,2,0,0,0,2,0,0,0,0,2,0,1,0,0,2,0,1,0,0,0,
+0,2,2,2,0,2,2,0,1,2,0,2,2,2,0,2,2,2,2,1,2,2,0,0,2,0,0,0,0,0,0,0,
+0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
+0,2,0,2,0,2,2,0,0,0,0,1,2,1,0,0,2,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,3,2,3,0,0,2,0,0,0,2,2,0,2,0,0,0,1,0,0,2,0,2,0,2,2,0,0,0,0,
+0,0,2,0,0,0,0,2,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,
+0,2,2,3,2,2,0,0,0,0,0,0,1,3,0,2,0,2,2,0,0,0,1,0,2,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,2,0,2,0,3,2,0,2,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
+0,0,2,0,0,0,0,1,1,0,0,2,1,2,0,2,2,0,1,0,0,1,0,0,0,2,0,0,0,0,0,0,
+0,3,0,2,2,2,0,0,2,0,0,0,2,0,0,0,2,3,0,2,0,0,0,0,0,0,2,2,0,0,0,2,
+0,1,2,0,0,0,1,2,2,1,0,0,0,2,0,0,2,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,2,1,2,0,2,2,0,2,0,0,2,0,0,0,0,1,2,1,0,2,1,0,0,0,0,0,0,0,0,0,0,
+0,0,2,0,0,0,3,1,2,2,0,2,0,0,0,0,2,0,0,0,2,0,0,3,0,0,0,0,2,2,2,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,2,1,0,2,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0,2,
+0,2,2,0,0,2,2,2,2,2,0,1,2,0,0,0,2,2,0,1,0,2,0,0,2,2,0,0,0,0,0,0,
+0,0,0,0,1,0,0,0,0,0,0,0,3,0,0,2,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,2,
+0,1,2,0,0,0,0,2,2,1,0,1,0,1,0,2,2,2,1,0,0,0,0,0,0,1,0,0,0,0,0,0,
+0,2,0,1,2,0,0,0,0,0,0,0,0,0,0,2,0,0,2,2,0,0,0,0,1,0,0,0,0,0,0,2,
+0,2,2,0,0,0,0,2,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,
+0,2,2,2,2,0,0,0,3,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,1,
+0,0,2,0,0,0,0,1,2,0,0,0,0,0,0,2,2,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,
+0,2,0,2,2,2,0,0,2,0,0,0,0,0,0,0,2,2,2,0,0,0,2,0,0,0,0,0,0,0,0,2,
+0,0,1,0,0,0,0,2,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,
+0,3,0,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,2,
+0,0,2,0,0,0,0,2,2,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,2,0,2,2,1,0,0,0,0,0,0,2,0,0,2,0,2,2,2,0,0,0,0,0,0,2,0,0,0,0,2,
+0,0,2,0,0,2,0,2,2,0,0,0,0,2,0,2,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,
+0,0,3,0,0,0,2,2,0,2,2,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,0,0,
+0,2,2,2,2,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,
+0,0,0,0,0,0,0,2,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,2,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
+0,2,0,0,0,2,0,0,0,0,0,1,0,0,0,0,2,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,2,0,0,0,
+0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,2,0,2,0,0,0,
+0,0,0,0,0,0,0,0,2,1,0,0,0,0,0,0,2,0,0,0,1,2,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+)
+
+Latin7GreekModel = {
+ 'charToOrderMap': Latin7_CharToOrderMap,
+ 'precedenceMatrix': GreekLangModel,
+ 'mTypicalPositiveRatio': 0.982851,
+ 'keepEnglishLetter': False,
+ 'charsetName': "ISO-8859-7"
+}
+
+Win1253GreekModel = {
+ 'charToOrderMap': win1253_CharToOrderMap,
+ 'precedenceMatrix': GreekLangModel,
+ 'mTypicalPositiveRatio': 0.982851,
+ 'keepEnglishLetter': False,
+ 'charsetName': "windows-1253"
+}
+
+# flake8: noqa
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/langhebrewmodel.py b/app/src/processing/app/i18n/python/requests/packages/charade/langhebrewmodel.py
index 4c6b3ce1189..248b02aa033 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/langhebrewmodel.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/langhebrewmodel.py
@@ -1,203 +1,203 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is Mozilla Universal charset detector code.
-#
-# The Initial Developer of the Original Code is
-# Simon Montagu
-# Portions created by the Initial Developer are Copyright (C) 2005
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-# Shy Shalom - original C code
-# Shoshannah Forbes - original C code (?)
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-from . import constants
-
-# 255: Control characters that usually does not exist in any text
-# 254: Carriage/Return
-# 253: symbol (punctuation) that does not belong to word
-# 252: 0 - 9
-
-# Windows-1255 language model
-# Character Mapping Table:
-win1255_CharToOrderMap = (
-255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
-253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
-252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
-253, 69, 91, 79, 80, 92, 89, 97, 90, 68,111,112, 82, 73, 95, 85, # 40
- 78,121, 86, 71, 67,102,107, 84,114,103,115,253,253,253,253,253, # 50
-253, 50, 74, 60, 61, 42, 76, 70, 64, 53,105, 93, 56, 65, 54, 49, # 60
- 66,110, 51, 43, 44, 63, 81, 77, 98, 75,108,253,253,253,253,253, # 70
-124,202,203,204,205, 40, 58,206,207,208,209,210,211,212,213,214,
-215, 83, 52, 47, 46, 72, 32, 94,216,113,217,109,218,219,220,221,
- 34,116,222,118,100,223,224,117,119,104,125,225,226, 87, 99,227,
-106,122,123,228, 55,229,230,101,231,232,120,233, 48, 39, 57,234,
- 30, 59, 41, 88, 33, 37, 36, 31, 29, 35,235, 62, 28,236,126,237,
-238, 38, 45,239,240,241,242,243,127,244,245,246,247,248,249,250,
- 9, 8, 20, 16, 3, 2, 24, 14, 22, 1, 25, 15, 4, 11, 6, 23,
- 12, 19, 13, 26, 18, 27, 21, 17, 7, 10, 5,251,252,128, 96,253,
-)
-
-# Model Table:
-# total sequences: 100%
-# first 512 sequences: 98.4004%
-# first 1024 sequences: 1.5981%
-# rest sequences: 0.087%
-# negative sequences: 0.0015%
-HebrewLangModel = (
-0,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,2,3,2,1,2,0,1,0,0,
-3,0,3,1,0,0,1,3,2,0,1,1,2,0,2,2,2,1,1,1,1,2,1,1,1,2,0,0,2,2,0,1,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,
-1,2,1,2,1,2,0,0,2,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,
-1,2,1,3,1,1,0,0,2,0,0,0,1,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,0,1,2,2,1,3,
-1,2,1,1,2,2,0,0,2,2,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,1,1,0,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,2,2,2,2,3,2,
-1,2,1,2,2,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,2,3,2,2,3,2,2,2,1,2,2,2,2,
-1,2,1,1,2,2,0,1,2,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,0,2,2,2,2,2,
-0,2,0,2,2,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,0,2,2,2,
-0,2,1,2,2,2,0,0,2,1,0,0,0,0,1,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,
-3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,2,1,2,3,2,2,2,
-1,2,1,2,2,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,
-3,3,3,3,3,3,3,3,3,2,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,1,0,2,0,2,
-0,2,1,2,2,2,0,0,1,2,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,2,0,0,1,0,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,2,3,2,2,3,2,1,2,1,1,1,
-0,1,1,1,1,1,3,0,1,0,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
-3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,0,0,1,0,0,1,0,0,0,0,
-0,0,1,0,0,0,0,0,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,
-0,2,0,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
-3,3,3,3,3,3,3,3,3,2,3,3,3,2,1,2,3,3,2,3,3,3,3,2,3,2,1,2,0,2,1,2,
-0,2,0,2,2,2,0,0,1,2,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,
-3,3,3,3,3,3,3,3,3,2,3,3,3,1,2,2,3,3,2,3,2,3,2,2,3,1,2,2,0,2,2,2,
-0,2,1,2,2,2,0,0,1,2,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,
-3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,2,3,3,2,2,2,3,3,3,3,1,3,2,2,2,
-0,2,0,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,3,3,3,2,3,2,2,2,1,2,2,0,2,2,2,2,
-0,2,0,2,2,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
-3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,1,3,2,3,3,2,3,3,2,2,1,2,2,2,2,2,2,
-0,2,1,2,1,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,
-3,3,3,3,3,3,2,3,2,3,3,2,3,3,3,3,2,3,2,3,3,3,3,3,2,2,2,2,2,2,2,1,
-0,2,0,1,2,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,
-3,3,3,3,3,3,3,3,3,2,1,2,3,3,3,3,3,3,3,2,3,2,3,2,1,2,3,0,2,1,2,2,
-0,2,1,1,2,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,2,0,
-3,3,3,3,3,3,3,3,3,2,3,3,3,3,2,1,3,1,2,2,2,1,2,3,3,1,2,1,2,2,2,2,
-0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,
-3,3,3,3,3,3,3,3,3,3,0,2,3,3,3,1,3,3,3,1,2,2,2,2,1,1,2,2,2,2,2,2,
-0,2,0,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,
-3,3,3,3,3,3,2,3,3,3,2,2,3,3,3,2,1,2,3,2,3,2,2,2,2,1,2,1,1,1,2,2,
-0,2,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
-3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,
-1,0,1,0,0,0,0,0,2,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,3,3,3,2,3,3,2,3,1,2,2,2,2,3,2,3,1,1,2,2,1,2,2,1,1,0,2,2,2,2,
-0,1,0,1,2,2,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,
-3,0,0,1,1,0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,0,
-0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,0,1,0,1,0,1,1,0,1,1,0,0,0,1,1,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,
-0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,0,0,0,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
-3,2,2,1,2,2,2,2,2,2,2,1,2,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,0,3,3,3,
-0,3,0,2,2,2,2,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
-2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,1,2,2,2,1,1,1,2,0,1,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,0,0,0,0,0,
-0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2,3,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,0,2,1,0,
-0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,
-0,3,1,1,2,2,2,2,2,1,2,2,2,1,1,2,2,2,2,2,2,2,1,2,2,1,0,1,1,1,1,0,
-0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,2,1,1,1,1,2,1,1,2,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,
-0,0,2,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,1,0,0,
-2,1,1,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,1,2,1,2,1,1,1,1,0,0,0,0,
-0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-1,2,1,2,2,2,2,2,2,2,2,2,2,1,2,1,2,1,1,2,1,1,1,2,1,2,1,2,0,1,0,1,
-0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,3,1,2,2,2,1,2,2,2,2,2,2,2,2,1,2,1,1,1,1,1,1,2,1,2,1,1,0,1,0,1,
-0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2,1,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,
-0,2,0,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
-3,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2,1,1,1,1,1,1,1,0,1,1,0,1,0,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,2,0,1,1,1,0,1,0,0,0,1,1,0,1,1,0,0,0,0,0,1,1,0,0,
-0,1,1,1,2,1,2,2,2,0,2,0,2,0,1,1,2,1,1,1,1,2,1,0,1,1,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
-1,0,1,0,0,0,0,0,1,0,1,2,2,0,1,0,0,1,1,2,2,1,2,0,2,0,0,0,1,2,0,1,
-2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,2,0,2,1,2,0,2,0,0,1,1,1,1,1,1,0,1,0,0,0,1,0,0,1,
-2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,1,0,0,0,0,0,1,0,2,1,1,0,1,0,0,1,1,1,2,2,0,0,1,0,0,0,1,0,0,1,
-1,1,2,1,0,1,1,1,0,1,0,1,1,1,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,2,2,1,
-0,2,0,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2,1,0,0,1,0,1,1,1,1,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-1,1,1,1,1,1,1,1,1,2,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,1,1,0,1,0,0,0,1,1,0,1,
-2,0,1,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,1,0,1,1,1,0,1,0,0,1,1,2,1,1,2,0,1,0,0,0,1,1,0,1,
-1,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,1,0,1,1,2,0,1,0,0,0,0,2,1,1,2,0,2,0,0,0,1,1,0,1,
-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,1,0,2,1,1,0,1,0,0,2,2,1,2,1,1,0,1,0,0,0,1,1,0,1,
-2,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,1,2,2,0,0,0,0,0,1,1,0,1,0,0,1,0,0,0,0,1,0,1,
-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,1,2,2,0,0,0,0,2,1,1,1,0,2,1,1,0,0,0,2,1,0,1,
-1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,1,0,1,1,2,0,1,0,0,1,1,0,2,1,1,0,1,0,0,0,1,1,0,1,
-2,2,1,1,1,0,1,1,0,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,1,0,2,1,1,0,1,0,0,1,1,0,1,2,1,0,2,0,0,0,1,1,0,1,
-2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,
-0,1,0,0,2,0,2,1,1,0,1,0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,1,0,1,1,2,0,1,0,0,1,1,1,0,1,0,0,1,0,0,0,1,0,0,1,
-1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-1,0,0,0,0,0,0,0,1,0,1,1,0,0,1,0,0,2,1,1,1,1,1,0,1,0,0,0,0,1,0,1,
-0,1,1,1,2,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,1,2,1,0,0,0,0,0,1,1,1,1,1,0,1,0,0,0,1,1,0,0,
-)
-
-Win1255HebrewModel = {
- 'charToOrderMap': win1255_CharToOrderMap,
- 'precedenceMatrix': HebrewLangModel,
- 'mTypicalPositiveRatio': 0.984004,
- 'keepEnglishLetter': False,
- 'charsetName': "windows-1255"
-}
-
-# flake8: noqa
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is Mozilla Universal charset detector code.
+#
+# The Initial Developer of the Original Code is
+# Simon Montagu
+# Portions created by the Initial Developer are Copyright (C) 2005
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+# Shy Shalom - original C code
+# Shoshannah Forbes - original C code (?)
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+from . import constants
+
+# 255: Control characters that usually does not exist in any text
+# 254: Carriage/Return
+# 253: symbol (punctuation) that does not belong to word
+# 252: 0 - 9
+
+# Windows-1255 language model
+# Character Mapping Table:
+win1255_CharToOrderMap = (
+255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
+253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
+252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
+253, 69, 91, 79, 80, 92, 89, 97, 90, 68,111,112, 82, 73, 95, 85, # 40
+ 78,121, 86, 71, 67,102,107, 84,114,103,115,253,253,253,253,253, # 50
+253, 50, 74, 60, 61, 42, 76, 70, 64, 53,105, 93, 56, 65, 54, 49, # 60
+ 66,110, 51, 43, 44, 63, 81, 77, 98, 75,108,253,253,253,253,253, # 70
+124,202,203,204,205, 40, 58,206,207,208,209,210,211,212,213,214,
+215, 83, 52, 47, 46, 72, 32, 94,216,113,217,109,218,219,220,221,
+ 34,116,222,118,100,223,224,117,119,104,125,225,226, 87, 99,227,
+106,122,123,228, 55,229,230,101,231,232,120,233, 48, 39, 57,234,
+ 30, 59, 41, 88, 33, 37, 36, 31, 29, 35,235, 62, 28,236,126,237,
+238, 38, 45,239,240,241,242,243,127,244,245,246,247,248,249,250,
+ 9, 8, 20, 16, 3, 2, 24, 14, 22, 1, 25, 15, 4, 11, 6, 23,
+ 12, 19, 13, 26, 18, 27, 21, 17, 7, 10, 5,251,252,128, 96,253,
+)
+
+# Model Table:
+# total sequences: 100%
+# first 512 sequences: 98.4004%
+# first 1024 sequences: 1.5981%
+# rest sequences: 0.087%
+# negative sequences: 0.0015%
+HebrewLangModel = (
+0,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,2,3,2,1,2,0,1,0,0,
+3,0,3,1,0,0,1,3,2,0,1,1,2,0,2,2,2,1,1,1,1,2,1,1,1,2,0,0,2,2,0,1,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,
+1,2,1,2,1,2,0,0,2,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,
+1,2,1,3,1,1,0,0,2,0,0,0,1,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,0,1,2,2,1,3,
+1,2,1,1,2,2,0,0,2,2,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,1,1,0,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,2,2,2,2,3,2,
+1,2,1,2,2,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,2,3,2,2,3,2,2,2,1,2,2,2,2,
+1,2,1,1,2,2,0,1,2,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,0,2,2,2,2,2,
+0,2,0,2,2,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,0,2,2,2,
+0,2,1,2,2,2,0,0,2,1,0,0,0,0,1,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,
+3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,2,1,2,3,2,2,2,
+1,2,1,2,2,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,
+3,3,3,3,3,3,3,3,3,2,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,1,0,2,0,2,
+0,2,1,2,2,2,0,0,1,2,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,2,0,0,1,0,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,2,3,2,2,3,2,1,2,1,1,1,
+0,1,1,1,1,1,3,0,1,0,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
+3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,0,0,1,0,0,1,0,0,0,0,
+0,0,1,0,0,0,0,0,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,
+0,2,0,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
+3,3,3,3,3,3,3,3,3,2,3,3,3,2,1,2,3,3,2,3,3,3,3,2,3,2,1,2,0,2,1,2,
+0,2,0,2,2,2,0,0,1,2,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,
+3,3,3,3,3,3,3,3,3,2,3,3,3,1,2,2,3,3,2,3,2,3,2,2,3,1,2,2,0,2,2,2,
+0,2,1,2,2,2,0,0,1,2,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,
+3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,2,3,3,2,2,2,3,3,3,3,1,3,2,2,2,
+0,2,0,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,3,3,3,2,3,2,2,2,1,2,2,0,2,2,2,2,
+0,2,0,2,2,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
+3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,1,3,2,3,3,2,3,3,2,2,1,2,2,2,2,2,2,
+0,2,1,2,1,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,
+3,3,3,3,3,3,2,3,2,3,3,2,3,3,3,3,2,3,2,3,3,3,3,3,2,2,2,2,2,2,2,1,
+0,2,0,1,2,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,
+3,3,3,3,3,3,3,3,3,2,1,2,3,3,3,3,3,3,3,2,3,2,3,2,1,2,3,0,2,1,2,2,
+0,2,1,1,2,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,2,0,
+3,3,3,3,3,3,3,3,3,2,3,3,3,3,2,1,3,1,2,2,2,1,2,3,3,1,2,1,2,2,2,2,
+0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,
+3,3,3,3,3,3,3,3,3,3,0,2,3,3,3,1,3,3,3,1,2,2,2,2,1,1,2,2,2,2,2,2,
+0,2,0,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,
+3,3,3,3,3,3,2,3,3,3,2,2,3,3,3,2,1,2,3,2,3,2,2,2,2,1,2,1,1,1,2,2,
+0,2,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
+3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,
+1,0,1,0,0,0,0,0,2,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,3,3,3,2,3,3,2,3,1,2,2,2,2,3,2,3,1,1,2,2,1,2,2,1,1,0,2,2,2,2,
+0,1,0,1,2,2,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,
+3,0,0,1,1,0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,0,
+0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,0,1,0,1,0,1,1,0,1,1,0,0,0,1,1,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,
+0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,0,0,0,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
+3,2,2,1,2,2,2,2,2,2,2,1,2,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,0,3,3,3,
+0,3,0,2,2,2,2,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
+2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,1,2,2,2,1,1,1,2,0,1,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,0,0,0,0,0,
+0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2,3,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,0,2,1,0,
+0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,
+0,3,1,1,2,2,2,2,2,1,2,2,2,1,1,2,2,2,2,2,2,2,1,2,2,1,0,1,1,1,1,0,
+0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,2,1,1,1,1,2,1,1,2,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,
+0,0,2,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,1,0,0,
+2,1,1,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,1,2,1,2,1,1,1,1,0,0,0,0,
+0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+1,2,1,2,2,2,2,2,2,2,2,2,2,1,2,1,2,1,1,2,1,1,1,2,1,2,1,2,0,1,0,1,
+0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,3,1,2,2,2,1,2,2,2,2,2,2,2,2,1,2,1,1,1,1,1,1,2,1,2,1,1,0,1,0,1,
+0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2,1,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,
+0,2,0,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
+3,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2,1,1,1,1,1,1,1,0,1,1,0,1,0,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,2,0,1,1,1,0,1,0,0,0,1,1,0,1,1,0,0,0,0,0,1,1,0,0,
+0,1,1,1,2,1,2,2,2,0,2,0,2,0,1,1,2,1,1,1,1,2,1,0,1,1,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
+1,0,1,0,0,0,0,0,1,0,1,2,2,0,1,0,0,1,1,2,2,1,2,0,2,0,0,0,1,2,0,1,
+2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,2,0,2,1,2,0,2,0,0,1,1,1,1,1,1,0,1,0,0,0,1,0,0,1,
+2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,1,0,0,0,0,0,1,0,2,1,1,0,1,0,0,1,1,1,2,2,0,0,1,0,0,0,1,0,0,1,
+1,1,2,1,0,1,1,1,0,1,0,1,1,1,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,2,2,1,
+0,2,0,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2,1,0,0,1,0,1,1,1,1,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+1,1,1,1,1,1,1,1,1,2,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,1,1,0,1,0,0,0,1,1,0,1,
+2,0,1,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,1,0,1,1,1,0,1,0,0,1,1,2,1,1,2,0,1,0,0,0,1,1,0,1,
+1,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,1,0,1,1,2,0,1,0,0,0,0,2,1,1,2,0,2,0,0,0,1,1,0,1,
+1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,1,0,2,1,1,0,1,0,0,2,2,1,2,1,1,0,1,0,0,0,1,1,0,1,
+2,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,1,2,2,0,0,0,0,0,1,1,0,1,0,0,1,0,0,0,0,1,0,1,
+1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,1,2,2,0,0,0,0,2,1,1,1,0,2,1,1,0,0,0,2,1,0,1,
+1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,1,0,1,1,2,0,1,0,0,1,1,0,2,1,1,0,1,0,0,0,1,1,0,1,
+2,2,1,1,1,0,1,1,0,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,1,0,2,1,1,0,1,0,0,1,1,0,1,2,1,0,2,0,0,0,1,1,0,1,
+2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,
+0,1,0,0,2,0,2,1,1,0,1,0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,1,0,1,1,2,0,1,0,0,1,1,1,0,1,0,0,1,0,0,0,1,0,0,1,
+1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+1,0,0,0,0,0,0,0,1,0,1,1,0,0,1,0,0,2,1,1,1,1,1,0,1,0,0,0,0,1,0,1,
+0,1,1,1,2,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,1,2,1,0,0,0,0,0,1,1,1,1,1,0,1,0,0,0,1,1,0,0,
+)
+
+Win1255HebrewModel = {
+ 'charToOrderMap': win1255_CharToOrderMap,
+ 'precedenceMatrix': HebrewLangModel,
+ 'mTypicalPositiveRatio': 0.984004,
+ 'keepEnglishLetter': False,
+ 'charsetName': "windows-1255"
+}
+
+# flake8: noqa
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/langhungarianmodel.py b/app/src/processing/app/i18n/python/requests/packages/charade/langhungarianmodel.py
index bd7f5055de6..c748d280c45 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/langhungarianmodel.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/langhungarianmodel.py
@@ -1,227 +1,227 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is Mozilla Communicator client code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 1998
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-from . import constants
-
-# 255: Control characters that usually does not exist in any text
-# 254: Carriage/Return
-# 253: symbol (punctuation) that does not belong to word
-# 252: 0 - 9
-
-# Character Mapping Table:
-Latin2_HungarianCharToOrderMap = (
-255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
-253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
-252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
-253, 28, 40, 54, 45, 32, 50, 49, 38, 39, 53, 36, 41, 34, 35, 47,
- 46, 71, 43, 33, 37, 57, 48, 64, 68, 55, 52,253,253,253,253,253,
-253, 2, 18, 26, 17, 1, 27, 12, 20, 9, 22, 7, 6, 13, 4, 8,
- 23, 67, 10, 5, 3, 21, 19, 65, 62, 16, 11,253,253,253,253,253,
-159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,
-175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,
-191,192,193,194,195,196,197, 75,198,199,200,201,202,203,204,205,
- 79,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,
-221, 51, 81,222, 78,223,224,225,226, 44,227,228,229, 61,230,231,
-232,233,234, 58,235, 66, 59,236,237,238, 60, 69, 63,239,240,241,
- 82, 14, 74,242, 70, 80,243, 72,244, 15, 83, 77, 84, 30, 76, 85,
-245,246,247, 25, 73, 42, 24,248,249,250, 31, 56, 29,251,252,253,
-)
-
-win1250HungarianCharToOrderMap = (
-255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
-253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
-252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
-253, 28, 40, 54, 45, 32, 50, 49, 38, 39, 53, 36, 41, 34, 35, 47,
- 46, 72, 43, 33, 37, 57, 48, 64, 68, 55, 52,253,253,253,253,253,
-253, 2, 18, 26, 17, 1, 27, 12, 20, 9, 22, 7, 6, 13, 4, 8,
- 23, 67, 10, 5, 3, 21, 19, 65, 62, 16, 11,253,253,253,253,253,
-161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,
-177,178,179,180, 78,181, 69,182,183,184,185,186,187,188,189,190,
-191,192,193,194,195,196,197, 76,198,199,200,201,202,203,204,205,
- 81,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,
-221, 51, 83,222, 80,223,224,225,226, 44,227,228,229, 61,230,231,
-232,233,234, 58,235, 66, 59,236,237,238, 60, 70, 63,239,240,241,
- 84, 14, 75,242, 71, 82,243, 73,244, 15, 85, 79, 86, 30, 77, 87,
-245,246,247, 25, 74, 42, 24,248,249,250, 31, 56, 29,251,252,253,
-)
-
-# Model Table:
-# total sequences: 100%
-# first 512 sequences: 94.7368%
-# first 1024 sequences:5.2623%
-# rest sequences: 0.8894%
-# negative sequences: 0.0009%
-HungarianLangModel = (
-0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
-3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,2,2,3,3,1,1,2,2,2,2,2,1,2,
-3,2,2,3,3,3,3,3,2,3,3,3,3,3,3,1,2,3,3,3,3,2,3,3,1,1,3,3,0,1,1,1,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,
-3,2,1,3,3,3,3,3,2,3,3,3,3,3,1,1,2,3,3,3,3,3,3,3,1,1,3,2,0,1,1,1,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
-3,3,3,3,3,3,3,3,3,3,3,1,1,2,3,3,3,1,3,3,3,3,3,1,3,3,2,2,0,3,2,3,
-0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,
-3,3,3,3,3,3,2,3,3,3,2,3,3,2,3,3,3,3,3,2,3,3,2,2,3,2,3,2,0,3,2,2,
-0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,
-3,3,3,3,3,3,2,3,3,3,3,3,2,3,3,3,1,2,3,2,2,3,1,2,3,3,2,2,0,3,3,3,
-0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
-3,3,3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,3,2,3,3,3,3,2,3,3,3,3,0,2,3,2,
-0,0,0,1,1,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
-3,3,3,3,3,3,3,3,3,3,3,1,1,1,3,3,2,1,3,2,2,3,2,1,3,2,2,1,0,3,3,1,
-0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
-3,2,2,3,3,3,3,3,1,2,3,3,3,3,1,2,1,3,3,3,3,2,2,3,1,1,3,2,0,1,1,1,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
-3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,2,1,3,3,3,3,3,2,2,1,3,3,3,0,1,1,2,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,2,3,3,2,3,3,3,2,0,3,2,3,
-0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,1,0,
-3,3,3,3,3,3,2,3,3,3,2,3,2,3,3,3,1,3,2,2,2,3,1,1,3,3,1,1,0,3,3,2,
-0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
-3,3,3,3,3,3,3,2,3,3,3,2,3,2,3,3,3,2,3,3,3,3,3,1,2,3,2,2,0,2,2,2,
-0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
-3,3,3,2,2,2,3,1,3,3,2,2,1,3,3,3,1,1,3,1,2,3,2,3,2,2,2,1,0,2,2,2,
-0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,
-3,1,1,3,3,3,3,3,1,2,3,3,3,3,1,2,1,3,3,3,2,2,3,2,1,0,3,2,0,1,1,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,1,1,3,3,3,3,3,1,2,3,3,3,3,1,1,0,3,3,3,3,0,2,3,0,0,2,1,0,1,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,3,3,3,3,2,2,3,3,2,2,2,2,3,3,0,1,2,3,2,3,2,2,3,2,1,2,0,2,2,2,
-0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,
-3,3,3,3,3,3,1,2,3,3,3,2,1,2,3,3,2,2,2,3,2,3,3,1,3,3,1,1,0,2,3,2,
-0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
-3,3,3,1,2,2,2,2,3,3,3,1,1,1,3,3,1,1,3,1,1,3,2,1,2,3,1,1,0,2,2,2,
-0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
-3,3,3,2,1,2,1,1,3,3,1,1,1,1,3,3,1,1,2,2,1,2,1,1,2,2,1,1,0,2,2,1,
-0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
-3,3,3,1,1,2,1,1,3,3,1,0,1,1,3,3,2,0,1,1,2,3,1,0,2,2,1,0,0,1,3,2,
-0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
-3,2,1,3,3,3,3,3,1,2,3,2,3,3,2,1,1,3,2,3,2,1,2,2,0,1,2,1,0,0,1,1,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
-3,3,3,3,2,2,2,2,3,1,2,2,1,1,3,3,0,3,2,1,2,3,2,1,3,3,1,1,0,2,1,3,
-0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
-3,3,3,2,2,2,3,2,3,3,3,2,1,1,3,3,1,1,1,2,2,3,2,3,2,2,2,1,0,2,2,1,
-0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
-1,0,0,3,3,3,3,3,0,0,3,3,2,3,0,0,0,2,3,3,1,0,1,2,0,0,1,1,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,1,2,3,3,3,3,3,1,2,3,3,2,2,1,1,0,3,3,2,2,1,2,2,1,0,2,2,0,1,1,1,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,2,2,1,3,1,2,3,3,2,2,1,1,2,2,1,1,1,1,3,2,1,1,1,1,2,1,0,1,2,1,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,
-2,3,3,1,1,1,1,1,3,3,3,0,1,1,3,3,1,1,1,1,1,2,2,0,3,1,1,2,0,2,1,1,
-0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
-3,1,0,1,2,1,2,2,0,1,2,3,1,2,0,0,0,2,1,1,1,1,1,2,0,0,1,1,0,0,0,0,
-1,2,1,2,2,2,1,2,1,2,0,2,0,2,2,1,1,2,1,1,2,1,1,1,0,1,0,0,0,1,1,0,
-1,1,1,2,3,2,3,3,0,1,2,2,3,1,0,1,0,2,1,2,2,0,1,1,0,0,1,1,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-1,0,0,3,3,2,2,1,0,0,3,2,3,2,0,0,0,1,1,3,0,0,1,1,0,0,2,1,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,1,1,2,2,3,3,1,0,1,3,2,3,1,1,1,0,1,1,1,1,1,3,1,0,0,2,2,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,1,1,1,2,2,2,1,0,1,2,3,3,2,0,0,0,2,1,1,1,2,1,1,1,0,1,1,1,0,0,0,
-1,2,2,2,2,2,1,1,1,2,0,2,1,1,1,1,1,2,1,1,1,1,1,1,0,1,1,1,0,0,1,1,
-3,2,2,1,0,0,1,1,2,2,0,3,0,1,2,1,1,0,0,1,1,1,0,1,1,1,1,0,2,1,1,1,
-2,2,1,1,1,2,1,2,1,1,1,1,1,1,1,2,1,1,1,2,3,1,1,1,1,1,1,1,1,1,0,1,
-2,3,3,0,1,0,0,0,3,3,1,0,0,1,2,2,1,0,0,0,0,2,0,0,1,1,1,0,2,1,1,1,
-2,1,1,1,1,1,1,2,1,1,0,1,1,0,1,1,1,0,1,2,1,1,0,1,1,1,1,1,1,1,0,1,
-2,3,3,0,1,0,0,0,2,2,0,0,0,0,1,2,2,0,0,0,0,1,0,0,1,1,0,0,2,0,1,0,
-2,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,2,0,1,1,1,1,1,0,1,
-3,2,2,0,1,0,1,0,2,3,2,0,0,1,2,2,1,0,0,1,1,1,0,0,2,1,0,1,2,2,1,1,
-2,1,1,1,1,1,1,2,1,1,1,1,1,1,0,2,1,0,1,1,0,1,1,1,0,1,1,2,1,1,0,1,
-2,2,2,0,0,1,0,0,2,2,1,1,0,0,2,1,1,0,0,0,1,2,0,0,2,1,0,0,2,1,1,1,
-2,1,1,1,1,2,1,2,1,1,1,2,2,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,0,1,
-1,2,3,0,0,0,1,0,3,2,1,0,0,1,2,1,1,0,0,0,0,2,1,0,1,1,0,0,2,1,2,1,
-1,1,0,0,0,1,0,1,1,1,1,1,2,0,0,1,0,0,0,2,0,0,1,1,1,1,1,1,1,1,0,1,
-3,0,0,2,1,2,2,1,0,0,2,1,2,2,0,0,0,2,1,1,1,0,1,1,0,0,1,1,2,0,0,0,
-1,2,1,2,2,1,1,2,1,2,0,1,1,1,1,1,1,1,1,1,2,1,1,0,0,1,1,1,1,0,0,1,
-1,3,2,0,0,0,1,0,2,2,2,0,0,0,2,2,1,0,0,0,0,3,1,1,1,1,0,0,2,1,1,1,
-2,1,0,1,1,1,0,1,1,1,1,1,1,1,0,2,1,0,0,1,0,1,1,0,1,1,1,1,1,1,0,1,
-2,3,2,0,0,0,1,0,2,2,0,0,0,0,2,1,1,0,0,0,0,2,1,0,1,1,0,0,2,1,1,0,
-2,1,1,1,1,2,1,2,1,2,0,1,1,1,0,2,1,1,1,2,1,1,1,1,0,1,1,1,1,1,0,1,
-3,1,1,2,2,2,3,2,1,1,2,2,1,1,0,1,0,2,2,1,1,1,1,1,0,0,1,1,0,1,1,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2,2,2,0,0,0,0,0,2,2,0,0,0,0,2,2,1,0,0,0,1,1,0,0,1,2,0,0,2,1,1,1,
-2,2,1,1,1,2,1,2,1,1,0,1,1,1,1,2,1,1,1,2,1,1,1,1,0,1,2,1,1,1,0,1,
-1,0,0,1,2,3,2,1,0,0,2,0,1,1,0,0,0,1,1,1,1,0,1,1,0,0,1,0,0,0,0,0,
-1,2,1,2,1,2,1,1,1,2,0,2,1,1,1,0,1,2,0,0,1,1,1,0,0,0,0,0,0,0,0,0,
-2,3,2,0,0,0,0,0,1,1,2,1,0,0,1,1,1,0,0,0,0,2,0,0,1,1,0,0,2,1,1,1,
-2,1,1,1,1,1,1,2,1,0,1,1,1,1,0,2,1,1,1,1,1,1,0,1,0,1,1,1,1,1,0,1,
-1,2,2,0,1,1,1,0,2,2,2,0,0,0,3,2,1,0,0,0,1,1,0,0,1,1,0,1,1,1,0,0,
-1,1,0,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,0,0,1,1,1,0,1,0,1,
-2,1,0,2,1,1,2,2,1,1,2,1,1,1,0,0,0,1,1,0,1,1,1,1,0,0,1,1,1,0,0,0,
-1,2,2,2,2,2,1,1,1,2,0,2,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,1,0,
-1,2,3,0,0,0,1,0,2,2,0,0,0,0,2,2,0,0,0,0,0,1,0,0,1,0,0,0,2,0,1,0,
-2,1,1,1,1,1,0,2,0,0,0,1,2,1,1,1,1,0,1,2,0,1,0,1,0,1,1,1,0,1,0,1,
-2,2,2,0,0,0,1,0,2,1,2,0,0,0,1,1,2,0,0,0,0,1,0,0,1,1,0,0,2,1,0,1,
-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,0,1,1,1,1,1,0,1,
-1,2,2,0,0,0,1,0,2,2,2,0,0,0,1,1,0,0,0,0,0,1,1,0,2,0,0,1,1,1,0,1,
-1,0,1,1,1,1,1,1,0,1,1,1,1,0,0,1,0,0,1,1,0,1,0,1,1,1,1,1,0,0,0,1,
-1,0,0,1,0,1,2,1,0,0,1,1,1,2,0,0,0,1,1,0,1,0,1,1,0,0,1,0,0,0,0,0,
-0,2,1,2,1,1,1,1,1,2,0,2,0,1,1,0,1,2,1,0,1,1,1,0,0,0,0,0,0,1,0,0,
-2,1,1,0,1,2,0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,2,1,0,1,
-2,2,1,1,1,1,1,2,1,1,0,1,1,1,1,2,1,1,1,2,1,1,0,1,0,1,1,1,1,1,0,1,
-1,2,2,0,0,0,0,0,1,1,0,0,0,0,2,1,0,0,0,0,0,2,0,0,2,2,0,0,2,0,0,1,
-2,1,1,1,1,1,1,1,0,1,1,0,1,1,0,1,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,
-1,1,2,0,0,3,1,0,2,1,1,1,0,0,1,1,1,0,0,0,1,1,0,0,0,1,0,0,1,0,1,0,
-1,2,1,0,1,1,1,2,1,1,0,1,1,1,1,1,0,0,0,1,1,1,1,1,0,1,0,0,0,1,0,0,
-2,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,2,0,0,0,
-2,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,2,1,1,0,0,1,1,1,1,1,0,1,
-2,1,1,1,2,1,1,1,0,1,1,2,1,0,0,0,0,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-1,1,0,1,1,1,1,1,0,0,1,1,2,1,0,0,0,1,1,0,0,0,1,1,0,0,1,0,1,0,0,0,
-1,2,1,1,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,1,0,0,
-2,0,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,1,1,1,2,0,0,1,0,0,1,0,1,0,0,0,
-0,1,1,1,1,1,1,1,1,2,0,1,1,1,1,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,
-1,0,0,1,1,1,1,1,0,0,2,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,
-0,1,1,1,1,1,1,0,1,1,0,1,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0,
-1,0,0,1,1,1,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,
-0,1,1,1,1,1,0,0,1,1,0,1,0,1,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,
-0,0,0,1,0,0,0,0,0,0,1,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,1,1,1,0,1,0,0,1,1,0,1,0,1,1,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,
-2,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,0,1,0,0,1,0,1,0,1,1,1,0,0,1,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-1,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,
-0,1,1,1,1,1,1,0,1,1,0,1,0,1,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,
-)
-
-Latin2HungarianModel = {
- 'charToOrderMap': Latin2_HungarianCharToOrderMap,
- 'precedenceMatrix': HungarianLangModel,
- 'mTypicalPositiveRatio': 0.947368,
- 'keepEnglishLetter': True,
- 'charsetName': "ISO-8859-2"
-}
-
-Win1250HungarianModel = {
- 'charToOrderMap': win1250HungarianCharToOrderMap,
- 'precedenceMatrix': HungarianLangModel,
- 'mTypicalPositiveRatio': 0.947368,
- 'keepEnglishLetter': True,
- 'charsetName': "windows-1250"
-}
-
-# flake8: noqa
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is Mozilla Communicator client code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+from . import constants
+
+# 255: Control characters that usually does not exist in any text
+# 254: Carriage/Return
+# 253: symbol (punctuation) that does not belong to word
+# 252: 0 - 9
+
+# Character Mapping Table:
+Latin2_HungarianCharToOrderMap = (
+255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
+253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
+252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
+253, 28, 40, 54, 45, 32, 50, 49, 38, 39, 53, 36, 41, 34, 35, 47,
+ 46, 71, 43, 33, 37, 57, 48, 64, 68, 55, 52,253,253,253,253,253,
+253, 2, 18, 26, 17, 1, 27, 12, 20, 9, 22, 7, 6, 13, 4, 8,
+ 23, 67, 10, 5, 3, 21, 19, 65, 62, 16, 11,253,253,253,253,253,
+159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,
+175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,
+191,192,193,194,195,196,197, 75,198,199,200,201,202,203,204,205,
+ 79,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,
+221, 51, 81,222, 78,223,224,225,226, 44,227,228,229, 61,230,231,
+232,233,234, 58,235, 66, 59,236,237,238, 60, 69, 63,239,240,241,
+ 82, 14, 74,242, 70, 80,243, 72,244, 15, 83, 77, 84, 30, 76, 85,
+245,246,247, 25, 73, 42, 24,248,249,250, 31, 56, 29,251,252,253,
+)
+
+win1250HungarianCharToOrderMap = (
+255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
+253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
+252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
+253, 28, 40, 54, 45, 32, 50, 49, 38, 39, 53, 36, 41, 34, 35, 47,
+ 46, 72, 43, 33, 37, 57, 48, 64, 68, 55, 52,253,253,253,253,253,
+253, 2, 18, 26, 17, 1, 27, 12, 20, 9, 22, 7, 6, 13, 4, 8,
+ 23, 67, 10, 5, 3, 21, 19, 65, 62, 16, 11,253,253,253,253,253,
+161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,
+177,178,179,180, 78,181, 69,182,183,184,185,186,187,188,189,190,
+191,192,193,194,195,196,197, 76,198,199,200,201,202,203,204,205,
+ 81,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,
+221, 51, 83,222, 80,223,224,225,226, 44,227,228,229, 61,230,231,
+232,233,234, 58,235, 66, 59,236,237,238, 60, 70, 63,239,240,241,
+ 84, 14, 75,242, 71, 82,243, 73,244, 15, 85, 79, 86, 30, 77, 87,
+245,246,247, 25, 74, 42, 24,248,249,250, 31, 56, 29,251,252,253,
+)
+
+# Model Table:
+# total sequences: 100%
+# first 512 sequences: 94.7368%
+# first 1024 sequences:5.2623%
+# rest sequences: 0.8894%
+# negative sequences: 0.0009%
+HungarianLangModel = (
+0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,2,2,3,3,1,1,2,2,2,2,2,1,2,
+3,2,2,3,3,3,3,3,2,3,3,3,3,3,3,1,2,3,3,3,3,2,3,3,1,1,3,3,0,1,1,1,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,
+3,2,1,3,3,3,3,3,2,3,3,3,3,3,1,1,2,3,3,3,3,3,3,3,1,1,3,2,0,1,1,1,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
+3,3,3,3,3,3,3,3,3,3,3,1,1,2,3,3,3,1,3,3,3,3,3,1,3,3,2,2,0,3,2,3,
+0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,
+3,3,3,3,3,3,2,3,3,3,2,3,3,2,3,3,3,3,3,2,3,3,2,2,3,2,3,2,0,3,2,2,
+0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,
+3,3,3,3,3,3,2,3,3,3,3,3,2,3,3,3,1,2,3,2,2,3,1,2,3,3,2,2,0,3,3,3,
+0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
+3,3,3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,3,2,3,3,3,3,2,3,3,3,3,0,2,3,2,
+0,0,0,1,1,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
+3,3,3,3,3,3,3,3,3,3,3,1,1,1,3,3,2,1,3,2,2,3,2,1,3,2,2,1,0,3,3,1,
+0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
+3,2,2,3,3,3,3,3,1,2,3,3,3,3,1,2,1,3,3,3,3,2,2,3,1,1,3,2,0,1,1,1,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
+3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,2,1,3,3,3,3,3,2,2,1,3,3,3,0,1,1,2,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,2,3,3,2,3,3,3,2,0,3,2,3,
+0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,1,0,
+3,3,3,3,3,3,2,3,3,3,2,3,2,3,3,3,1,3,2,2,2,3,1,1,3,3,1,1,0,3,3,2,
+0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
+3,3,3,3,3,3,3,2,3,3,3,2,3,2,3,3,3,2,3,3,3,3,3,1,2,3,2,2,0,2,2,2,
+0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
+3,3,3,2,2,2,3,1,3,3,2,2,1,3,3,3,1,1,3,1,2,3,2,3,2,2,2,1,0,2,2,2,
+0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,
+3,1,1,3,3,3,3,3,1,2,3,3,3,3,1,2,1,3,3,3,2,2,3,2,1,0,3,2,0,1,1,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,1,1,3,3,3,3,3,1,2,3,3,3,3,1,1,0,3,3,3,3,0,2,3,0,0,2,1,0,1,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,3,3,3,3,2,2,3,3,2,2,2,2,3,3,0,1,2,3,2,3,2,2,3,2,1,2,0,2,2,2,
+0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,
+3,3,3,3,3,3,1,2,3,3,3,2,1,2,3,3,2,2,2,3,2,3,3,1,3,3,1,1,0,2,3,2,
+0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
+3,3,3,1,2,2,2,2,3,3,3,1,1,1,3,3,1,1,3,1,1,3,2,1,2,3,1,1,0,2,2,2,
+0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
+3,3,3,2,1,2,1,1,3,3,1,1,1,1,3,3,1,1,2,2,1,2,1,1,2,2,1,1,0,2,2,1,
+0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
+3,3,3,1,1,2,1,1,3,3,1,0,1,1,3,3,2,0,1,1,2,3,1,0,2,2,1,0,0,1,3,2,
+0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
+3,2,1,3,3,3,3,3,1,2,3,2,3,3,2,1,1,3,2,3,2,1,2,2,0,1,2,1,0,0,1,1,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
+3,3,3,3,2,2,2,2,3,1,2,2,1,1,3,3,0,3,2,1,2,3,2,1,3,3,1,1,0,2,1,3,
+0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
+3,3,3,2,2,2,3,2,3,3,3,2,1,1,3,3,1,1,1,2,2,3,2,3,2,2,2,1,0,2,2,1,
+0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
+1,0,0,3,3,3,3,3,0,0,3,3,2,3,0,0,0,2,3,3,1,0,1,2,0,0,1,1,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,1,2,3,3,3,3,3,1,2,3,3,2,2,1,1,0,3,3,2,2,1,2,2,1,0,2,2,0,1,1,1,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,2,2,1,3,1,2,3,3,2,2,1,1,2,2,1,1,1,1,3,2,1,1,1,1,2,1,0,1,2,1,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,
+2,3,3,1,1,1,1,1,3,3,3,0,1,1,3,3,1,1,1,1,1,2,2,0,3,1,1,2,0,2,1,1,
+0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
+3,1,0,1,2,1,2,2,0,1,2,3,1,2,0,0,0,2,1,1,1,1,1,2,0,0,1,1,0,0,0,0,
+1,2,1,2,2,2,1,2,1,2,0,2,0,2,2,1,1,2,1,1,2,1,1,1,0,1,0,0,0,1,1,0,
+1,1,1,2,3,2,3,3,0,1,2,2,3,1,0,1,0,2,1,2,2,0,1,1,0,0,1,1,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+1,0,0,3,3,2,2,1,0,0,3,2,3,2,0,0,0,1,1,3,0,0,1,1,0,0,2,1,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,1,1,2,2,3,3,1,0,1,3,2,3,1,1,1,0,1,1,1,1,1,3,1,0,0,2,2,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,1,1,1,2,2,2,1,0,1,2,3,3,2,0,0,0,2,1,1,1,2,1,1,1,0,1,1,1,0,0,0,
+1,2,2,2,2,2,1,1,1,2,0,2,1,1,1,1,1,2,1,1,1,1,1,1,0,1,1,1,0,0,1,1,
+3,2,2,1,0,0,1,1,2,2,0,3,0,1,2,1,1,0,0,1,1,1,0,1,1,1,1,0,2,1,1,1,
+2,2,1,1,1,2,1,2,1,1,1,1,1,1,1,2,1,1,1,2,3,1,1,1,1,1,1,1,1,1,0,1,
+2,3,3,0,1,0,0,0,3,3,1,0,0,1,2,2,1,0,0,0,0,2,0,0,1,1,1,0,2,1,1,1,
+2,1,1,1,1,1,1,2,1,1,0,1,1,0,1,1,1,0,1,2,1,1,0,1,1,1,1,1,1,1,0,1,
+2,3,3,0,1,0,0,0,2,2,0,0,0,0,1,2,2,0,0,0,0,1,0,0,1,1,0,0,2,0,1,0,
+2,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,2,0,1,1,1,1,1,0,1,
+3,2,2,0,1,0,1,0,2,3,2,0,0,1,2,2,1,0,0,1,1,1,0,0,2,1,0,1,2,2,1,1,
+2,1,1,1,1,1,1,2,1,1,1,1,1,1,0,2,1,0,1,1,0,1,1,1,0,1,1,2,1,1,0,1,
+2,2,2,0,0,1,0,0,2,2,1,1,0,0,2,1,1,0,0,0,1,2,0,0,2,1,0,0,2,1,1,1,
+2,1,1,1,1,2,1,2,1,1,1,2,2,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,0,1,
+1,2,3,0,0,0,1,0,3,2,1,0,0,1,2,1,1,0,0,0,0,2,1,0,1,1,0,0,2,1,2,1,
+1,1,0,0,0,1,0,1,1,1,1,1,2,0,0,1,0,0,0,2,0,0,1,1,1,1,1,1,1,1,0,1,
+3,0,0,2,1,2,2,1,0,0,2,1,2,2,0,0,0,2,1,1,1,0,1,1,0,0,1,1,2,0,0,0,
+1,2,1,2,2,1,1,2,1,2,0,1,1,1,1,1,1,1,1,1,2,1,1,0,0,1,1,1,1,0,0,1,
+1,3,2,0,0,0,1,0,2,2,2,0,0,0,2,2,1,0,0,0,0,3,1,1,1,1,0,0,2,1,1,1,
+2,1,0,1,1,1,0,1,1,1,1,1,1,1,0,2,1,0,0,1,0,1,1,0,1,1,1,1,1,1,0,1,
+2,3,2,0,0,0,1,0,2,2,0,0,0,0,2,1,1,0,0,0,0,2,1,0,1,1,0,0,2,1,1,0,
+2,1,1,1,1,2,1,2,1,2,0,1,1,1,0,2,1,1,1,2,1,1,1,1,0,1,1,1,1,1,0,1,
+3,1,1,2,2,2,3,2,1,1,2,2,1,1,0,1,0,2,2,1,1,1,1,1,0,0,1,1,0,1,1,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2,2,2,0,0,0,0,0,2,2,0,0,0,0,2,2,1,0,0,0,1,1,0,0,1,2,0,0,2,1,1,1,
+2,2,1,1,1,2,1,2,1,1,0,1,1,1,1,2,1,1,1,2,1,1,1,1,0,1,2,1,1,1,0,1,
+1,0,0,1,2,3,2,1,0,0,2,0,1,1,0,0,0,1,1,1,1,0,1,1,0,0,1,0,0,0,0,0,
+1,2,1,2,1,2,1,1,1,2,0,2,1,1,1,0,1,2,0,0,1,1,1,0,0,0,0,0,0,0,0,0,
+2,3,2,0,0,0,0,0,1,1,2,1,0,0,1,1,1,0,0,0,0,2,0,0,1,1,0,0,2,1,1,1,
+2,1,1,1,1,1,1,2,1,0,1,1,1,1,0,2,1,1,1,1,1,1,0,1,0,1,1,1,1,1,0,1,
+1,2,2,0,1,1,1,0,2,2,2,0,0,0,3,2,1,0,0,0,1,1,0,0,1,1,0,1,1,1,0,0,
+1,1,0,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,0,0,1,1,1,0,1,0,1,
+2,1,0,2,1,1,2,2,1,1,2,1,1,1,0,0,0,1,1,0,1,1,1,1,0,0,1,1,1,0,0,0,
+1,2,2,2,2,2,1,1,1,2,0,2,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,1,0,
+1,2,3,0,0,0,1,0,2,2,0,0,0,0,2,2,0,0,0,0,0,1,0,0,1,0,0,0,2,0,1,0,
+2,1,1,1,1,1,0,2,0,0,0,1,2,1,1,1,1,0,1,2,0,1,0,1,0,1,1,1,0,1,0,1,
+2,2,2,0,0,0,1,0,2,1,2,0,0,0,1,1,2,0,0,0,0,1,0,0,1,1,0,0,2,1,0,1,
+2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,0,1,1,1,1,1,0,1,
+1,2,2,0,0,0,1,0,2,2,2,0,0,0,1,1,0,0,0,0,0,1,1,0,2,0,0,1,1,1,0,1,
+1,0,1,1,1,1,1,1,0,1,1,1,1,0,0,1,0,0,1,1,0,1,0,1,1,1,1,1,0,0,0,1,
+1,0,0,1,0,1,2,1,0,0,1,1,1,2,0,0,0,1,1,0,1,0,1,1,0,0,1,0,0,0,0,0,
+0,2,1,2,1,1,1,1,1,2,0,2,0,1,1,0,1,2,1,0,1,1,1,0,0,0,0,0,0,1,0,0,
+2,1,1,0,1,2,0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,2,1,0,1,
+2,2,1,1,1,1,1,2,1,1,0,1,1,1,1,2,1,1,1,2,1,1,0,1,0,1,1,1,1,1,0,1,
+1,2,2,0,0,0,0,0,1,1,0,0,0,0,2,1,0,0,0,0,0,2,0,0,2,2,0,0,2,0,0,1,
+2,1,1,1,1,1,1,1,0,1,1,0,1,1,0,1,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,
+1,1,2,0,0,3,1,0,2,1,1,1,0,0,1,1,1,0,0,0,1,1,0,0,0,1,0,0,1,0,1,0,
+1,2,1,0,1,1,1,2,1,1,0,1,1,1,1,1,0,0,0,1,1,1,1,1,0,1,0,0,0,1,0,0,
+2,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,2,0,0,0,
+2,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,2,1,1,0,0,1,1,1,1,1,0,1,
+2,1,1,1,2,1,1,1,0,1,1,2,1,0,0,0,0,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+1,1,0,1,1,1,1,1,0,0,1,1,2,1,0,0,0,1,1,0,0,0,1,1,0,0,1,0,1,0,0,0,
+1,2,1,1,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,1,0,0,
+2,0,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,1,1,1,2,0,0,1,0,0,1,0,1,0,0,0,
+0,1,1,1,1,1,1,1,1,2,0,1,1,1,1,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,
+1,0,0,1,1,1,1,1,0,0,2,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,
+0,1,1,1,1,1,1,0,1,1,0,1,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0,
+1,0,0,1,1,1,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,
+0,1,1,1,1,1,0,0,1,1,0,1,0,1,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,
+0,0,0,1,0,0,0,0,0,0,1,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,1,1,1,0,1,0,0,1,1,0,1,0,1,1,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,
+2,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,0,1,0,0,1,0,1,0,1,1,1,0,0,1,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+1,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,
+0,1,1,1,1,1,1,0,1,1,0,1,0,1,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,
+)
+
+Latin2HungarianModel = {
+ 'charToOrderMap': Latin2_HungarianCharToOrderMap,
+ 'precedenceMatrix': HungarianLangModel,
+ 'mTypicalPositiveRatio': 0.947368,
+ 'keepEnglishLetter': True,
+ 'charsetName': "ISO-8859-2"
+}
+
+Win1250HungarianModel = {
+ 'charToOrderMap': win1250HungarianCharToOrderMap,
+ 'precedenceMatrix': HungarianLangModel,
+ 'mTypicalPositiveRatio': 0.947368,
+ 'keepEnglishLetter': True,
+ 'charsetName': "windows-1250"
+}
+
+# flake8: noqa
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/langthaimodel.py b/app/src/processing/app/i18n/python/requests/packages/charade/langthaimodel.py
index df343a74732..0508b1b1abc 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/langthaimodel.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/langthaimodel.py
@@ -1,200 +1,200 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is Mozilla Communicator client code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 1998
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-# 255: Control characters that usually does not exist in any text
-# 254: Carriage/Return
-# 253: symbol (punctuation) that does not belong to word
-# 252: 0 - 9
-
-# The following result for thai was collected from a limited sample (1M).
-
-# Character Mapping Table:
-TIS620CharToOrderMap = (
-255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
-253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
-252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
-253,182,106,107,100,183,184,185,101, 94,186,187,108,109,110,111, # 40
-188,189,190, 89, 95,112,113,191,192,193,194,253,253,253,253,253, # 50
-253, 64, 72, 73,114, 74,115,116,102, 81,201,117, 90,103, 78, 82, # 60
- 96,202, 91, 79, 84,104,105, 97, 98, 92,203,253,253,253,253,253, # 70
-209,210,211,212,213, 88,214,215,216,217,218,219,220,118,221,222,
-223,224, 99, 85, 83,225,226,227,228,229,230,231,232,233,234,235,
-236, 5, 30,237, 24,238, 75, 8, 26, 52, 34, 51,119, 47, 58, 57,
- 49, 53, 55, 43, 20, 19, 44, 14, 48, 3, 17, 25, 39, 62, 31, 54,
- 45, 9, 16, 2, 61, 15,239, 12, 42, 46, 18, 21, 76, 4, 66, 63,
- 22, 10, 1, 36, 23, 13, 40, 27, 32, 35, 86,240,241,242,243,244,
- 11, 28, 41, 29, 33,245, 50, 37, 6, 7, 67, 77, 38, 93,246,247,
- 68, 56, 59, 65, 69, 60, 70, 80, 71, 87,248,249,250,251,252,253,
-)
-
-# Model Table:
-# total sequences: 100%
-# first 512 sequences: 92.6386%
-# first 1024 sequences:7.3177%
-# rest sequences: 1.0230%
-# negative sequences: 0.0436%
-ThaiLangModel = (
-0,1,3,3,3,3,0,0,3,3,0,3,3,0,3,3,3,3,3,3,3,3,0,0,3,3,3,0,3,3,3,3,
-0,3,3,0,0,0,1,3,0,3,3,2,3,3,0,1,2,3,3,3,3,0,2,0,2,0,0,3,2,1,2,2,
-3,0,3,3,2,3,0,0,3,3,0,3,3,0,3,3,3,3,3,3,3,3,3,0,3,2,3,0,2,2,2,3,
-0,2,3,0,0,0,0,1,0,1,2,3,1,1,3,2,2,0,1,1,0,0,1,0,0,0,0,0,0,0,1,1,
-3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,3,3,2,3,2,3,3,2,2,2,
-3,1,2,3,0,3,3,2,2,1,2,3,3,1,2,0,1,3,0,1,0,0,1,0,0,0,0,0,0,0,1,1,
-3,3,2,2,3,3,3,3,1,2,3,3,3,3,3,2,2,2,2,3,3,2,2,3,3,2,2,3,2,3,2,2,
-3,3,1,2,3,1,2,2,3,3,1,0,2,1,0,0,3,1,2,1,0,0,1,0,0,0,0,0,0,1,0,1,
-3,3,3,3,3,3,2,2,3,3,3,3,2,3,2,2,3,3,2,2,3,2,2,2,2,1,1,3,1,2,1,1,
-3,2,1,0,2,1,0,1,0,1,1,0,1,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,
-3,3,3,2,3,2,3,3,2,2,3,2,3,3,2,3,1,1,2,3,2,2,2,3,2,2,2,2,2,1,2,1,
-2,2,1,1,3,3,2,1,0,1,2,2,0,1,3,0,0,0,1,1,0,0,0,0,0,2,3,0,0,2,1,1,
-3,3,2,3,3,2,0,0,3,3,0,3,3,0,2,2,3,1,2,2,1,1,1,0,2,2,2,0,2,2,1,1,
-0,2,1,0,2,0,0,2,0,1,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,
-3,3,2,3,3,2,0,0,3,3,0,2,3,0,2,1,2,2,2,2,1,2,0,0,2,2,2,0,2,2,1,1,
-0,2,1,0,2,0,0,2,0,1,1,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,
-3,3,2,3,2,3,2,0,2,2,1,3,2,1,3,2,1,2,3,2,2,3,0,2,3,2,2,1,2,2,2,2,
-1,2,2,0,0,0,0,2,0,1,2,0,1,1,1,0,1,0,3,1,1,0,0,0,0,0,0,0,0,0,1,0,
-3,3,2,3,3,2,3,2,2,2,3,2,2,3,2,2,1,2,3,2,2,3,1,3,2,2,2,3,2,2,2,3,
-3,2,1,3,0,1,1,1,0,2,1,1,1,1,1,0,1,0,1,1,0,0,0,0,0,0,0,0,0,2,0,0,
-1,0,0,3,0,3,3,3,3,3,0,0,3,0,2,2,3,3,3,3,3,0,0,0,1,1,3,0,0,0,0,2,
-0,0,1,0,0,0,0,0,0,0,2,3,0,0,0,3,0,2,0,0,0,0,0,3,0,0,0,0,0,0,0,0,
-2,0,3,3,3,3,0,0,2,3,0,0,3,0,3,3,2,3,3,3,3,3,0,0,3,3,3,0,0,0,3,3,
-0,0,3,0,0,0,0,2,0,0,2,1,1,3,0,0,1,0,0,2,3,0,1,0,0,0,0,0,0,0,1,0,
-3,3,3,3,2,3,3,3,3,3,3,3,1,2,1,3,3,2,2,1,2,2,2,3,1,1,2,0,2,1,2,1,
-2,2,1,0,0,0,1,1,0,1,0,1,1,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,
-3,0,2,1,2,3,3,3,0,2,0,2,2,0,2,1,3,2,2,1,2,1,0,0,2,2,1,0,2,1,2,2,
-0,1,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,3,3,2,1,3,3,1,1,3,0,2,3,1,1,3,2,1,1,2,0,2,2,3,2,1,1,1,1,1,2,
-3,0,0,1,3,1,2,1,2,0,3,0,0,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,
-3,3,1,1,3,2,3,3,3,1,3,2,1,3,2,1,3,2,2,2,2,1,3,3,1,2,1,3,1,2,3,0,
-2,1,1,3,2,2,2,1,2,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,
-3,3,2,3,2,3,3,2,3,2,3,2,3,3,2,1,0,3,2,2,2,1,2,2,2,1,2,2,1,2,1,1,
-2,2,2,3,0,1,3,1,1,1,1,0,1,1,0,2,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,3,3,2,3,2,2,1,1,3,2,3,2,3,2,0,3,2,2,1,2,0,2,2,2,1,2,2,2,2,1,
-3,2,1,2,2,1,0,2,0,1,0,0,1,1,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,1,
-3,3,3,3,3,2,3,1,2,3,3,2,2,3,0,1,1,2,0,3,3,2,2,3,0,1,1,3,0,0,0,0,
-3,1,0,3,3,0,2,0,2,1,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,3,2,3,2,3,3,0,1,3,1,1,2,1,2,1,1,3,1,1,0,2,3,1,1,1,1,1,1,1,1,
-3,1,1,2,2,2,2,1,1,1,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
-3,2,2,1,1,2,1,3,3,2,3,2,2,3,2,2,3,1,2,2,1,2,0,3,2,1,2,2,2,2,2,1,
-3,2,1,2,2,2,1,1,1,1,0,0,1,1,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,3,3,3,3,3,3,1,3,3,0,2,1,0,3,2,0,0,3,1,0,1,1,0,1,0,0,0,0,0,1,
-1,0,0,1,0,3,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,0,2,2,2,3,0,0,1,3,0,3,2,0,3,2,2,3,3,3,3,3,1,0,2,2,2,0,2,2,1,2,
-0,2,3,0,0,0,0,1,0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
-3,0,2,3,1,3,3,2,3,3,0,3,3,0,3,2,2,3,2,3,3,3,0,0,2,2,3,0,1,1,1,3,
-0,0,3,0,0,0,2,2,0,1,3,0,1,2,2,2,3,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,
-3,2,3,3,2,0,3,3,2,2,3,1,3,2,1,3,2,0,1,2,2,0,2,3,2,1,0,3,0,0,0,0,
-3,0,0,2,3,1,3,0,0,3,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,1,3,2,2,2,1,2,0,1,3,1,1,3,1,3,0,0,2,1,1,1,1,2,1,1,1,0,2,1,0,1,
-1,2,0,0,0,3,1,1,0,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,3,1,0,0,0,1,0,
-3,3,3,3,2,2,2,2,2,1,3,1,1,1,2,0,1,1,2,1,2,1,3,2,0,0,3,1,1,1,1,1,
-3,1,0,2,3,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,2,3,0,3,3,0,2,0,0,0,0,0,0,0,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,
-0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,2,3,1,3,0,0,1,2,0,0,2,0,3,3,2,3,3,3,2,3,0,0,2,2,2,0,0,0,2,2,
-0,0,1,0,0,0,0,3,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,
-0,0,0,3,0,2,0,0,0,0,0,0,0,0,0,0,1,2,3,1,3,3,0,0,1,0,3,0,0,0,0,0,
-0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,1,2,3,1,2,3,1,0,3,0,2,2,1,0,2,1,1,2,0,1,0,0,1,1,1,1,0,1,0,0,
-1,0,0,0,0,1,1,0,3,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,3,3,2,1,0,1,1,1,3,1,2,2,2,2,2,2,1,1,1,1,0,3,1,0,1,3,1,1,1,1,
-1,1,0,2,0,1,3,1,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,1,
-3,0,2,2,1,3,3,2,3,3,0,1,1,0,2,2,1,2,1,3,3,1,0,0,3,2,0,0,0,0,2,1,
-0,1,0,0,0,0,1,2,0,1,1,3,1,1,2,2,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
-0,0,3,0,0,1,0,0,0,3,0,0,3,0,3,1,0,1,1,1,3,2,0,0,0,3,0,0,0,0,2,0,
-0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,
-3,3,1,3,2,1,3,3,1,2,2,0,1,2,1,0,1,2,0,0,0,0,0,3,0,0,0,3,0,0,0,0,
-3,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,0,1,2,0,3,3,3,2,2,0,1,1,0,1,3,0,0,0,2,2,0,0,0,0,3,1,0,1,0,0,0,
-0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,0,2,3,1,2,0,0,2,1,0,3,1,0,1,2,0,1,1,1,1,3,0,0,3,1,1,0,2,2,1,1,
-0,2,0,0,0,0,0,1,0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,0,0,3,1,2,0,0,2,2,0,1,2,0,1,0,1,3,1,2,1,0,0,0,2,0,3,0,0,0,1,0,
-0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,0,1,1,2,2,0,0,0,2,0,2,1,0,1,1,0,1,1,1,2,1,0,0,1,1,1,0,2,1,1,1,
-0,1,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,
-0,0,0,2,0,1,3,1,1,1,1,0,0,0,0,3,2,0,1,0,0,0,1,2,0,0,0,1,0,0,0,0,
-0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,3,3,3,3,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-1,0,2,3,2,2,0,0,0,1,0,0,0,0,2,3,2,1,2,2,3,0,0,0,2,3,1,0,0,0,1,1,
-0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,
-3,3,2,2,0,1,0,0,0,0,2,0,2,0,1,0,0,0,1,1,0,0,0,2,1,0,1,0,1,1,0,0,
-0,1,0,2,0,0,1,0,3,0,1,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,1,0,0,1,0,0,0,0,0,1,1,2,0,0,0,0,1,0,0,1,3,1,0,0,0,0,1,1,0,0,
-0,1,0,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,
-3,3,1,1,1,1,2,3,0,0,2,1,1,1,1,1,0,2,1,1,0,0,0,2,1,0,1,2,1,1,0,1,
-2,1,0,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-1,3,1,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,
-0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,2,0,0,0,0,0,0,1,2,1,0,1,1,0,2,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,2,0,0,0,1,3,0,1,0,0,0,2,0,0,0,0,0,0,0,1,2,0,0,0,0,0,
-3,3,0,0,1,1,2,0,0,1,2,1,0,1,1,1,0,1,1,0,0,2,1,1,0,1,0,0,1,1,1,0,
-0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2,2,2,1,0,0,0,0,1,0,0,0,0,3,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,
-2,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2,3,0,0,1,1,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-1,1,0,1,2,0,1,2,0,0,1,1,0,2,0,1,0,0,1,0,0,0,0,1,0,0,0,2,0,0,0,0,
-1,0,0,1,0,1,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,1,0,0,0,0,0,0,0,1,1,0,1,1,0,2,1,3,0,0,0,0,1,1,0,0,0,0,0,0,0,3,
-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2,0,1,0,1,0,0,2,0,0,2,0,0,1,1,2,0,0,1,1,0,0,0,1,0,0,0,1,1,0,0,0,
-1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,
-1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,1,0,0,0,
-2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,3,0,0,0,
-2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,
-1,0,0,0,0,0,0,0,0,1,0,0,0,0,2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,1,1,0,0,2,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-)
-
-TIS620ThaiModel = {
- 'charToOrderMap': TIS620CharToOrderMap,
- 'precedenceMatrix': ThaiLangModel,
- 'mTypicalPositiveRatio': 0.926386,
- 'keepEnglishLetter': False,
- 'charsetName': "TIS-620"
-}
-
-# flake8: noqa
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is Mozilla Communicator client code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+# 255: Control characters that usually does not exist in any text
+# 254: Carriage/Return
+# 253: symbol (punctuation) that does not belong to word
+# 252: 0 - 9
+
+# The following result for thai was collected from a limited sample (1M).
+
+# Character Mapping Table:
+TIS620CharToOrderMap = (
+255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10
+253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20
+252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30
+253,182,106,107,100,183,184,185,101, 94,186,187,108,109,110,111, # 40
+188,189,190, 89, 95,112,113,191,192,193,194,253,253,253,253,253, # 50
+253, 64, 72, 73,114, 74,115,116,102, 81,201,117, 90,103, 78, 82, # 60
+ 96,202, 91, 79, 84,104,105, 97, 98, 92,203,253,253,253,253,253, # 70
+209,210,211,212,213, 88,214,215,216,217,218,219,220,118,221,222,
+223,224, 99, 85, 83,225,226,227,228,229,230,231,232,233,234,235,
+236, 5, 30,237, 24,238, 75, 8, 26, 52, 34, 51,119, 47, 58, 57,
+ 49, 53, 55, 43, 20, 19, 44, 14, 48, 3, 17, 25, 39, 62, 31, 54,
+ 45, 9, 16, 2, 61, 15,239, 12, 42, 46, 18, 21, 76, 4, 66, 63,
+ 22, 10, 1, 36, 23, 13, 40, 27, 32, 35, 86,240,241,242,243,244,
+ 11, 28, 41, 29, 33,245, 50, 37, 6, 7, 67, 77, 38, 93,246,247,
+ 68, 56, 59, 65, 69, 60, 70, 80, 71, 87,248,249,250,251,252,253,
+)
+
+# Model Table:
+# total sequences: 100%
+# first 512 sequences: 92.6386%
+# first 1024 sequences:7.3177%
+# rest sequences: 1.0230%
+# negative sequences: 0.0436%
+ThaiLangModel = (
+0,1,3,3,3,3,0,0,3,3,0,3,3,0,3,3,3,3,3,3,3,3,0,0,3,3,3,0,3,3,3,3,
+0,3,3,0,0,0,1,3,0,3,3,2,3,3,0,1,2,3,3,3,3,0,2,0,2,0,0,3,2,1,2,2,
+3,0,3,3,2,3,0,0,3,3,0,3,3,0,3,3,3,3,3,3,3,3,3,0,3,2,3,0,2,2,2,3,
+0,2,3,0,0,0,0,1,0,1,2,3,1,1,3,2,2,0,1,1,0,0,1,0,0,0,0,0,0,0,1,1,
+3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,3,3,2,3,2,3,3,2,2,2,
+3,1,2,3,0,3,3,2,2,1,2,3,3,1,2,0,1,3,0,1,0,0,1,0,0,0,0,0,0,0,1,1,
+3,3,2,2,3,3,3,3,1,2,3,3,3,3,3,2,2,2,2,3,3,2,2,3,3,2,2,3,2,3,2,2,
+3,3,1,2,3,1,2,2,3,3,1,0,2,1,0,0,3,1,2,1,0,0,1,0,0,0,0,0,0,1,0,1,
+3,3,3,3,3,3,2,2,3,3,3,3,2,3,2,2,3,3,2,2,3,2,2,2,2,1,1,3,1,2,1,1,
+3,2,1,0,2,1,0,1,0,1,1,0,1,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,
+3,3,3,2,3,2,3,3,2,2,3,2,3,3,2,3,1,1,2,3,2,2,2,3,2,2,2,2,2,1,2,1,
+2,2,1,1,3,3,2,1,0,1,2,2,0,1,3,0,0,0,1,1,0,0,0,0,0,2,3,0,0,2,1,1,
+3,3,2,3,3,2,0,0,3,3,0,3,3,0,2,2,3,1,2,2,1,1,1,0,2,2,2,0,2,2,1,1,
+0,2,1,0,2,0,0,2,0,1,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,
+3,3,2,3,3,2,0,0,3,3,0,2,3,0,2,1,2,2,2,2,1,2,0,0,2,2,2,0,2,2,1,1,
+0,2,1,0,2,0,0,2,0,1,1,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,
+3,3,2,3,2,3,2,0,2,2,1,3,2,1,3,2,1,2,3,2,2,3,0,2,3,2,2,1,2,2,2,2,
+1,2,2,0,0,0,0,2,0,1,2,0,1,1,1,0,1,0,3,1,1,0,0,0,0,0,0,0,0,0,1,0,
+3,3,2,3,3,2,3,2,2,2,3,2,2,3,2,2,1,2,3,2,2,3,1,3,2,2,2,3,2,2,2,3,
+3,2,1,3,0,1,1,1,0,2,1,1,1,1,1,0,1,0,1,1,0,0,0,0,0,0,0,0,0,2,0,0,
+1,0,0,3,0,3,3,3,3,3,0,0,3,0,2,2,3,3,3,3,3,0,0,0,1,1,3,0,0,0,0,2,
+0,0,1,0,0,0,0,0,0,0,2,3,0,0,0,3,0,2,0,0,0,0,0,3,0,0,0,0,0,0,0,0,
+2,0,3,3,3,3,0,0,2,3,0,0,3,0,3,3,2,3,3,3,3,3,0,0,3,3,3,0,0,0,3,3,
+0,0,3,0,0,0,0,2,0,0,2,1,1,3,0,0,1,0,0,2,3,0,1,0,0,0,0,0,0,0,1,0,
+3,3,3,3,2,3,3,3,3,3,3,3,1,2,1,3,3,2,2,1,2,2,2,3,1,1,2,0,2,1,2,1,
+2,2,1,0,0,0,1,1,0,1,0,1,1,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,
+3,0,2,1,2,3,3,3,0,2,0,2,2,0,2,1,3,2,2,1,2,1,0,0,2,2,1,0,2,1,2,2,
+0,1,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,3,3,2,1,3,3,1,1,3,0,2,3,1,1,3,2,1,1,2,0,2,2,3,2,1,1,1,1,1,2,
+3,0,0,1,3,1,2,1,2,0,3,0,0,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,
+3,3,1,1,3,2,3,3,3,1,3,2,1,3,2,1,3,2,2,2,2,1,3,3,1,2,1,3,1,2,3,0,
+2,1,1,3,2,2,2,1,2,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,
+3,3,2,3,2,3,3,2,3,2,3,2,3,3,2,1,0,3,2,2,2,1,2,2,2,1,2,2,1,2,1,1,
+2,2,2,3,0,1,3,1,1,1,1,0,1,1,0,2,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,3,3,2,3,2,2,1,1,3,2,3,2,3,2,0,3,2,2,1,2,0,2,2,2,1,2,2,2,2,1,
+3,2,1,2,2,1,0,2,0,1,0,0,1,1,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,1,
+3,3,3,3,3,2,3,1,2,3,3,2,2,3,0,1,1,2,0,3,3,2,2,3,0,1,1,3,0,0,0,0,
+3,1,0,3,3,0,2,0,2,1,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,3,2,3,2,3,3,0,1,3,1,1,2,1,2,1,1,3,1,1,0,2,3,1,1,1,1,1,1,1,1,
+3,1,1,2,2,2,2,1,1,1,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
+3,2,2,1,1,2,1,3,3,2,3,2,2,3,2,2,3,1,2,2,1,2,0,3,2,1,2,2,2,2,2,1,
+3,2,1,2,2,2,1,1,1,1,0,0,1,1,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,3,3,3,3,3,3,1,3,3,0,2,1,0,3,2,0,0,3,1,0,1,1,0,1,0,0,0,0,0,1,
+1,0,0,1,0,3,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,0,2,2,2,3,0,0,1,3,0,3,2,0,3,2,2,3,3,3,3,3,1,0,2,2,2,0,2,2,1,2,
+0,2,3,0,0,0,0,1,0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
+3,0,2,3,1,3,3,2,3,3,0,3,3,0,3,2,2,3,2,3,3,3,0,0,2,2,3,0,1,1,1,3,
+0,0,3,0,0,0,2,2,0,1,3,0,1,2,2,2,3,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,
+3,2,3,3,2,0,3,3,2,2,3,1,3,2,1,3,2,0,1,2,2,0,2,3,2,1,0,3,0,0,0,0,
+3,0,0,2,3,1,3,0,0,3,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,1,3,2,2,2,1,2,0,1,3,1,1,3,1,3,0,0,2,1,1,1,1,2,1,1,1,0,2,1,0,1,
+1,2,0,0,0,3,1,1,0,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,3,1,0,0,0,1,0,
+3,3,3,3,2,2,2,2,2,1,3,1,1,1,2,0,1,1,2,1,2,1,3,2,0,0,3,1,1,1,1,1,
+3,1,0,2,3,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,2,3,0,3,3,0,2,0,0,0,0,0,0,0,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,
+0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,2,3,1,3,0,0,1,2,0,0,2,0,3,3,2,3,3,3,2,3,0,0,2,2,2,0,0,0,2,2,
+0,0,1,0,0,0,0,3,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,
+0,0,0,3,0,2,0,0,0,0,0,0,0,0,0,0,1,2,3,1,3,3,0,0,1,0,3,0,0,0,0,0,
+0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,1,2,3,1,2,3,1,0,3,0,2,2,1,0,2,1,1,2,0,1,0,0,1,1,1,1,0,1,0,0,
+1,0,0,0,0,1,1,0,3,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,3,3,2,1,0,1,1,1,3,1,2,2,2,2,2,2,1,1,1,1,0,3,1,0,1,3,1,1,1,1,
+1,1,0,2,0,1,3,1,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,1,
+3,0,2,2,1,3,3,2,3,3,0,1,1,0,2,2,1,2,1,3,3,1,0,0,3,2,0,0,0,0,2,1,
+0,1,0,0,0,0,1,2,0,1,1,3,1,1,2,2,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
+0,0,3,0,0,1,0,0,0,3,0,0,3,0,3,1,0,1,1,1,3,2,0,0,0,3,0,0,0,0,2,0,
+0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,
+3,3,1,3,2,1,3,3,1,2,2,0,1,2,1,0,1,2,0,0,0,0,0,3,0,0,0,3,0,0,0,0,
+3,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,0,1,2,0,3,3,3,2,2,0,1,1,0,1,3,0,0,0,2,2,0,0,0,0,3,1,0,1,0,0,0,
+0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,0,2,3,1,2,0,0,2,1,0,3,1,0,1,2,0,1,1,1,1,3,0,0,3,1,1,0,2,2,1,1,
+0,2,0,0,0,0,0,1,0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,0,0,3,1,2,0,0,2,2,0,1,2,0,1,0,1,3,1,2,1,0,0,0,2,0,3,0,0,0,1,0,
+0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,0,1,1,2,2,0,0,0,2,0,2,1,0,1,1,0,1,1,1,2,1,0,0,1,1,1,0,2,1,1,1,
+0,1,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,
+0,0,0,2,0,1,3,1,1,1,1,0,0,0,0,3,2,0,1,0,0,0,1,2,0,0,0,1,0,0,0,0,
+0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,3,3,3,3,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+1,0,2,3,2,2,0,0,0,1,0,0,0,0,2,3,2,1,2,2,3,0,0,0,2,3,1,0,0,0,1,1,
+0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,
+3,3,2,2,0,1,0,0,0,0,2,0,2,0,1,0,0,0,1,1,0,0,0,2,1,0,1,0,1,1,0,0,
+0,1,0,2,0,0,1,0,3,0,1,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,1,0,0,1,0,0,0,0,0,1,1,2,0,0,0,0,1,0,0,1,3,1,0,0,0,0,1,1,0,0,
+0,1,0,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,
+3,3,1,1,1,1,2,3,0,0,2,1,1,1,1,1,0,2,1,1,0,0,0,2,1,0,1,2,1,1,0,1,
+2,1,0,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+1,3,1,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,
+0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,2,0,0,0,0,0,0,1,2,1,0,1,1,0,2,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,2,0,0,0,1,3,0,1,0,0,0,2,0,0,0,0,0,0,0,1,2,0,0,0,0,0,
+3,3,0,0,1,1,2,0,0,1,2,1,0,1,1,1,0,1,1,0,0,2,1,1,0,1,0,0,1,1,1,0,
+0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2,2,2,1,0,0,0,0,1,0,0,0,0,3,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,
+2,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2,3,0,0,1,1,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+1,1,0,1,2,0,1,2,0,0,1,1,0,2,0,1,0,0,1,0,0,0,0,1,0,0,0,2,0,0,0,0,
+1,0,0,1,0,1,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,1,0,0,0,0,0,0,0,1,1,0,1,1,0,2,1,3,0,0,0,0,1,1,0,0,0,0,0,0,0,3,
+1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2,0,1,0,1,0,0,2,0,0,2,0,0,1,1,2,0,0,1,1,0,0,0,1,0,0,0,1,1,0,0,0,
+1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,
+1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,1,0,0,0,
+2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,3,0,0,0,
+2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,
+1,0,0,0,0,0,0,0,0,1,0,0,0,0,2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,1,1,0,0,2,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+)
+
+TIS620ThaiModel = {
+ 'charToOrderMap': TIS620CharToOrderMap,
+ 'precedenceMatrix': ThaiLangModel,
+ 'mTypicalPositiveRatio': 0.926386,
+ 'keepEnglishLetter': False,
+ 'charsetName': "TIS-620"
+}
+
+# flake8: noqa
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/latin1prober.py b/app/src/processing/app/i18n/python/requests/packages/charade/latin1prober.py
index bebe1bcb02f..ad695f57a72 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/latin1prober.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/latin1prober.py
@@ -1,139 +1,139 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is Mozilla Universal charset detector code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 2001
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-# Shy Shalom - original C code
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-from .charsetprober import CharSetProber
-from .constants import eNotMe
-from .compat import wrap_ord
-
-FREQ_CAT_NUM = 4
-
-UDF = 0 # undefined
-OTH = 1 # other
-ASC = 2 # ascii capital letter
-ASS = 3 # ascii small letter
-ACV = 4 # accent capital vowel
-ACO = 5 # accent capital other
-ASV = 6 # accent small vowel
-ASO = 7 # accent small other
-CLASS_NUM = 8 # total classes
-
-Latin1_CharToClass = (
- OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 00 - 07
- OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 08 - 0F
- OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 10 - 17
- OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 18 - 1F
- OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 20 - 27
- OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 28 - 2F
- OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 30 - 37
- OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 38 - 3F
- OTH, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 40 - 47
- ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 48 - 4F
- ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 50 - 57
- ASC, ASC, ASC, OTH, OTH, OTH, OTH, OTH, # 58 - 5F
- OTH, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 60 - 67
- ASS, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 68 - 6F
- ASS, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 70 - 77
- ASS, ASS, ASS, OTH, OTH, OTH, OTH, OTH, # 78 - 7F
- OTH, UDF, OTH, ASO, OTH, OTH, OTH, OTH, # 80 - 87
- OTH, OTH, ACO, OTH, ACO, UDF, ACO, UDF, # 88 - 8F
- UDF, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 90 - 97
- OTH, OTH, ASO, OTH, ASO, UDF, ASO, ACO, # 98 - 9F
- OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # A0 - A7
- OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # A8 - AF
- OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # B0 - B7
- OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # B8 - BF
- ACV, ACV, ACV, ACV, ACV, ACV, ACO, ACO, # C0 - C7
- ACV, ACV, ACV, ACV, ACV, ACV, ACV, ACV, # C8 - CF
- ACO, ACO, ACV, ACV, ACV, ACV, ACV, OTH, # D0 - D7
- ACV, ACV, ACV, ACV, ACV, ACO, ACO, ACO, # D8 - DF
- ASV, ASV, ASV, ASV, ASV, ASV, ASO, ASO, # E0 - E7
- ASV, ASV, ASV, ASV, ASV, ASV, ASV, ASV, # E8 - EF
- ASO, ASO, ASV, ASV, ASV, ASV, ASV, OTH, # F0 - F7
- ASV, ASV, ASV, ASV, ASV, ASO, ASO, ASO, # F8 - FF
-)
-
-# 0 : illegal
-# 1 : very unlikely
-# 2 : normal
-# 3 : very likely
-Latin1ClassModel = (
- # UDF OTH ASC ASS ACV ACO ASV ASO
- 0, 0, 0, 0, 0, 0, 0, 0, # UDF
- 0, 3, 3, 3, 3, 3, 3, 3, # OTH
- 0, 3, 3, 3, 3, 3, 3, 3, # ASC
- 0, 3, 3, 3, 1, 1, 3, 3, # ASS
- 0, 3, 3, 3, 1, 2, 1, 2, # ACV
- 0, 3, 3, 3, 3, 3, 3, 3, # ACO
- 0, 3, 1, 3, 1, 1, 1, 3, # ASV
- 0, 3, 1, 3, 1, 1, 3, 3, # ASO
-)
-
-
-class Latin1Prober(CharSetProber):
- def __init__(self):
- CharSetProber.__init__(self)
- self.reset()
-
- def reset(self):
- self._mLastCharClass = OTH
- self._mFreqCounter = [0] * FREQ_CAT_NUM
- CharSetProber.reset(self)
-
- def get_charset_name(self):
- return "windows-1252"
-
- def feed(self, aBuf):
- aBuf = self.filter_with_english_letters(aBuf)
- for c in aBuf:
- charClass = Latin1_CharToClass[wrap_ord(c)]
- freq = Latin1ClassModel[(self._mLastCharClass * CLASS_NUM)
- + charClass]
- if freq == 0:
- self._mState = eNotMe
- break
- self._mFreqCounter[freq] += 1
- self._mLastCharClass = charClass
-
- return self.get_state()
-
- def get_confidence(self):
- if self.get_state() == eNotMe:
- return 0.01
-
- total = sum(self._mFreqCounter)
- if total < 0.01:
- confidence = 0.0
- else:
- confidence = ((self._mFreqCounter[3] / total)
- - (self._mFreqCounter[1] * 20.0 / total))
- if confidence < 0.0:
- confidence = 0.0
- # lower the confidence of latin1 so that other more accurate
- # detector can take priority.
- confidence = confidence * 0.5
- return confidence
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is Mozilla Universal charset detector code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 2001
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+# Shy Shalom - original C code
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+from .charsetprober import CharSetProber
+from .constants import eNotMe
+from .compat import wrap_ord
+
+FREQ_CAT_NUM = 4
+
+UDF = 0 # undefined
+OTH = 1 # other
+ASC = 2 # ascii capital letter
+ASS = 3 # ascii small letter
+ACV = 4 # accent capital vowel
+ACO = 5 # accent capital other
+ASV = 6 # accent small vowel
+ASO = 7 # accent small other
+CLASS_NUM = 8 # total classes
+
+Latin1_CharToClass = (
+ OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 00 - 07
+ OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 08 - 0F
+ OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 10 - 17
+ OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 18 - 1F
+ OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 20 - 27
+ OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 28 - 2F
+ OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 30 - 37
+ OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 38 - 3F
+ OTH, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 40 - 47
+ ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 48 - 4F
+ ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 50 - 57
+ ASC, ASC, ASC, OTH, OTH, OTH, OTH, OTH, # 58 - 5F
+ OTH, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 60 - 67
+ ASS, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 68 - 6F
+ ASS, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 70 - 77
+ ASS, ASS, ASS, OTH, OTH, OTH, OTH, OTH, # 78 - 7F
+ OTH, UDF, OTH, ASO, OTH, OTH, OTH, OTH, # 80 - 87
+ OTH, OTH, ACO, OTH, ACO, UDF, ACO, UDF, # 88 - 8F
+ UDF, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 90 - 97
+ OTH, OTH, ASO, OTH, ASO, UDF, ASO, ACO, # 98 - 9F
+ OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # A0 - A7
+ OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # A8 - AF
+ OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # B0 - B7
+ OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # B8 - BF
+ ACV, ACV, ACV, ACV, ACV, ACV, ACO, ACO, # C0 - C7
+ ACV, ACV, ACV, ACV, ACV, ACV, ACV, ACV, # C8 - CF
+ ACO, ACO, ACV, ACV, ACV, ACV, ACV, OTH, # D0 - D7
+ ACV, ACV, ACV, ACV, ACV, ACO, ACO, ACO, # D8 - DF
+ ASV, ASV, ASV, ASV, ASV, ASV, ASO, ASO, # E0 - E7
+ ASV, ASV, ASV, ASV, ASV, ASV, ASV, ASV, # E8 - EF
+ ASO, ASO, ASV, ASV, ASV, ASV, ASV, OTH, # F0 - F7
+ ASV, ASV, ASV, ASV, ASV, ASO, ASO, ASO, # F8 - FF
+)
+
+# 0 : illegal
+# 1 : very unlikely
+# 2 : normal
+# 3 : very likely
+Latin1ClassModel = (
+ # UDF OTH ASC ASS ACV ACO ASV ASO
+ 0, 0, 0, 0, 0, 0, 0, 0, # UDF
+ 0, 3, 3, 3, 3, 3, 3, 3, # OTH
+ 0, 3, 3, 3, 3, 3, 3, 3, # ASC
+ 0, 3, 3, 3, 1, 1, 3, 3, # ASS
+ 0, 3, 3, 3, 1, 2, 1, 2, # ACV
+ 0, 3, 3, 3, 3, 3, 3, 3, # ACO
+ 0, 3, 1, 3, 1, 1, 1, 3, # ASV
+ 0, 3, 1, 3, 1, 1, 3, 3, # ASO
+)
+
+
+class Latin1Prober(CharSetProber):
+ def __init__(self):
+ CharSetProber.__init__(self)
+ self.reset()
+
+ def reset(self):
+ self._mLastCharClass = OTH
+ self._mFreqCounter = [0] * FREQ_CAT_NUM
+ CharSetProber.reset(self)
+
+ def get_charset_name(self):
+ return "windows-1252"
+
+ def feed(self, aBuf):
+ aBuf = self.filter_with_english_letters(aBuf)
+ for c in aBuf:
+ charClass = Latin1_CharToClass[wrap_ord(c)]
+ freq = Latin1ClassModel[(self._mLastCharClass * CLASS_NUM)
+ + charClass]
+ if freq == 0:
+ self._mState = eNotMe
+ break
+ self._mFreqCounter[freq] += 1
+ self._mLastCharClass = charClass
+
+ return self.get_state()
+
+ def get_confidence(self):
+ if self.get_state() == eNotMe:
+ return 0.01
+
+ total = sum(self._mFreqCounter)
+ if total < 0.01:
+ confidence = 0.0
+ else:
+ confidence = ((self._mFreqCounter[3] / total)
+ - (self._mFreqCounter[1] * 20.0 / total))
+ if confidence < 0.0:
+ confidence = 0.0
+ # lower the confidence of latin1 so that other more accurate
+ # detector can take priority.
+ confidence = confidence * 0.5
+ return confidence
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/mbcharsetprober.py b/app/src/processing/app/i18n/python/requests/packages/charade/mbcharsetprober.py
index 1eee253c047..bb42f2fb5e8 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/mbcharsetprober.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/mbcharsetprober.py
@@ -1,86 +1,86 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is Mozilla Universal charset detector code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 2001
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-# Shy Shalom - original C code
-# Proofpoint, Inc.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-import sys
-from . import constants
-from .charsetprober import CharSetProber
-
-
-class MultiByteCharSetProber(CharSetProber):
- def __init__(self):
- CharSetProber.__init__(self)
- self._mDistributionAnalyzer = None
- self._mCodingSM = None
- self._mLastChar = [0, 0]
-
- def reset(self):
- CharSetProber.reset(self)
- if self._mCodingSM:
- self._mCodingSM.reset()
- if self._mDistributionAnalyzer:
- self._mDistributionAnalyzer.reset()
- self._mLastChar = [0, 0]
-
- def get_charset_name(self):
- pass
-
- def feed(self, aBuf):
- aLen = len(aBuf)
- for i in range(0, aLen):
- codingState = self._mCodingSM.next_state(aBuf[i])
- if codingState == constants.eError:
- if constants._debug:
- sys.stderr.write(self.get_charset_name()
- + ' prober hit error at byte ' + str(i)
- + '\n')
- self._mState = constants.eNotMe
- break
- elif codingState == constants.eItsMe:
- self._mState = constants.eFoundIt
- break
- elif codingState == constants.eStart:
- charLen = self._mCodingSM.get_current_charlen()
- if i == 0:
- self._mLastChar[1] = aBuf[0]
- self._mDistributionAnalyzer.feed(self._mLastChar, charLen)
- else:
- self._mDistributionAnalyzer.feed(aBuf[i - 1:i + 1],
- charLen)
-
- self._mLastChar[0] = aBuf[aLen - 1]
-
- if self.get_state() == constants.eDetecting:
- if (self._mDistributionAnalyzer.got_enough_data() and
- (self.get_confidence() > constants.SHORTCUT_THRESHOLD)):
- self._mState = constants.eFoundIt
-
- return self.get_state()
-
- def get_confidence(self):
- return self._mDistributionAnalyzer.get_confidence()
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is Mozilla Universal charset detector code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 2001
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+# Shy Shalom - original C code
+# Proofpoint, Inc.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+import sys
+from . import constants
+from .charsetprober import CharSetProber
+
+
+class MultiByteCharSetProber(CharSetProber):
+ def __init__(self):
+ CharSetProber.__init__(self)
+ self._mDistributionAnalyzer = None
+ self._mCodingSM = None
+ self._mLastChar = [0, 0]
+
+ def reset(self):
+ CharSetProber.reset(self)
+ if self._mCodingSM:
+ self._mCodingSM.reset()
+ if self._mDistributionAnalyzer:
+ self._mDistributionAnalyzer.reset()
+ self._mLastChar = [0, 0]
+
+ def get_charset_name(self):
+ pass
+
+ def feed(self, aBuf):
+ aLen = len(aBuf)
+ for i in range(0, aLen):
+ codingState = self._mCodingSM.next_state(aBuf[i])
+ if codingState == constants.eError:
+ if constants._debug:
+ sys.stderr.write(self.get_charset_name()
+ + ' prober hit error at byte ' + str(i)
+ + '\n')
+ self._mState = constants.eNotMe
+ break
+ elif codingState == constants.eItsMe:
+ self._mState = constants.eFoundIt
+ break
+ elif codingState == constants.eStart:
+ charLen = self._mCodingSM.get_current_charlen()
+ if i == 0:
+ self._mLastChar[1] = aBuf[0]
+ self._mDistributionAnalyzer.feed(self._mLastChar, charLen)
+ else:
+ self._mDistributionAnalyzer.feed(aBuf[i - 1:i + 1],
+ charLen)
+
+ self._mLastChar[0] = aBuf[aLen - 1]
+
+ if self.get_state() == constants.eDetecting:
+ if (self._mDistributionAnalyzer.got_enough_data() and
+ (self.get_confidence() > constants.SHORTCUT_THRESHOLD)):
+ self._mState = constants.eFoundIt
+
+ return self.get_state()
+
+ def get_confidence(self):
+ return self._mDistributionAnalyzer.get_confidence()
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/mbcsgroupprober.py b/app/src/processing/app/i18n/python/requests/packages/charade/mbcsgroupprober.py
index ebe93d08d37..e349a9b6b33 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/mbcsgroupprober.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/mbcsgroupprober.py
@@ -1,52 +1,52 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is Mozilla Universal charset detector code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 2001
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-# Shy Shalom - original C code
-# Proofpoint, Inc.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-from .charsetgroupprober import CharSetGroupProber
-from .utf8prober import UTF8Prober
-from .sjisprober import SJISProber
-from .eucjpprober import EUCJPProber
-from .gb2312prober import GB2312Prober
-from .euckrprober import EUCKRProber
-from .big5prober import Big5Prober
-from .euctwprober import EUCTWProber
-
-
-class MBCSGroupProber(CharSetGroupProber):
- def __init__(self):
- CharSetGroupProber.__init__(self)
- self._mProbers = [
- UTF8Prober(),
- SJISProber(),
- EUCJPProber(),
- GB2312Prober(),
- EUCKRProber(),
- Big5Prober(),
- EUCTWProber()
- ]
- self.reset()
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is Mozilla Universal charset detector code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 2001
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+# Shy Shalom - original C code
+# Proofpoint, Inc.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+from .charsetgroupprober import CharSetGroupProber
+from .utf8prober import UTF8Prober
+from .sjisprober import SJISProber
+from .eucjpprober import EUCJPProber
+from .gb2312prober import GB2312Prober
+from .euckrprober import EUCKRProber
+from .big5prober import Big5Prober
+from .euctwprober import EUCTWProber
+
+
+class MBCSGroupProber(CharSetGroupProber):
+ def __init__(self):
+ CharSetGroupProber.__init__(self)
+ self._mProbers = [
+ UTF8Prober(),
+ SJISProber(),
+ EUCJPProber(),
+ GB2312Prober(),
+ EUCKRProber(),
+ Big5Prober(),
+ EUCTWProber()
+ ]
+ self.reset()
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/mbcssm.py b/app/src/processing/app/i18n/python/requests/packages/charade/mbcssm.py
index 3a720c9a9af..fc7904a9a50 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/mbcssm.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/mbcssm.py
@@ -1,535 +1,535 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is mozilla.org code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 1998
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-from .constants import eStart, eError, eItsMe
-
-# BIG5
-
-BIG5_cls = (
- 1,1,1,1,1,1,1,1, # 00 - 07 #allow 0x00 as legal value
- 1,1,1,1,1,1,0,0, # 08 - 0f
- 1,1,1,1,1,1,1,1, # 10 - 17
- 1,1,1,0,1,1,1,1, # 18 - 1f
- 1,1,1,1,1,1,1,1, # 20 - 27
- 1,1,1,1,1,1,1,1, # 28 - 2f
- 1,1,1,1,1,1,1,1, # 30 - 37
- 1,1,1,1,1,1,1,1, # 38 - 3f
- 2,2,2,2,2,2,2,2, # 40 - 47
- 2,2,2,2,2,2,2,2, # 48 - 4f
- 2,2,2,2,2,2,2,2, # 50 - 57
- 2,2,2,2,2,2,2,2, # 58 - 5f
- 2,2,2,2,2,2,2,2, # 60 - 67
- 2,2,2,2,2,2,2,2, # 68 - 6f
- 2,2,2,2,2,2,2,2, # 70 - 77
- 2,2,2,2,2,2,2,1, # 78 - 7f
- 4,4,4,4,4,4,4,4, # 80 - 87
- 4,4,4,4,4,4,4,4, # 88 - 8f
- 4,4,4,4,4,4,4,4, # 90 - 97
- 4,4,4,4,4,4,4,4, # 98 - 9f
- 4,3,3,3,3,3,3,3, # a0 - a7
- 3,3,3,3,3,3,3,3, # a8 - af
- 3,3,3,3,3,3,3,3, # b0 - b7
- 3,3,3,3,3,3,3,3, # b8 - bf
- 3,3,3,3,3,3,3,3, # c0 - c7
- 3,3,3,3,3,3,3,3, # c8 - cf
- 3,3,3,3,3,3,3,3, # d0 - d7
- 3,3,3,3,3,3,3,3, # d8 - df
- 3,3,3,3,3,3,3,3, # e0 - e7
- 3,3,3,3,3,3,3,3, # e8 - ef
- 3,3,3,3,3,3,3,3, # f0 - f7
- 3,3,3,3,3,3,3,0 # f8 - ff
-)
-
-BIG5_st = (
- eError,eStart,eStart, 3,eError,eError,eError,eError,#00-07
- eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eError,#08-0f
- eError,eStart,eStart,eStart,eStart,eStart,eStart,eStart#10-17
-)
-
-Big5CharLenTable = (0, 1, 1, 2, 0)
-
-Big5SMModel = {'classTable': BIG5_cls,
- 'classFactor': 5,
- 'stateTable': BIG5_st,
- 'charLenTable': Big5CharLenTable,
- 'name': 'Big5'}
-
-# EUC-JP
-
-EUCJP_cls = (
- 4,4,4,4,4,4,4,4, # 00 - 07
- 4,4,4,4,4,4,5,5, # 08 - 0f
- 4,4,4,4,4,4,4,4, # 10 - 17
- 4,4,4,5,4,4,4,4, # 18 - 1f
- 4,4,4,4,4,4,4,4, # 20 - 27
- 4,4,4,4,4,4,4,4, # 28 - 2f
- 4,4,4,4,4,4,4,4, # 30 - 37
- 4,4,4,4,4,4,4,4, # 38 - 3f
- 4,4,4,4,4,4,4,4, # 40 - 47
- 4,4,4,4,4,4,4,4, # 48 - 4f
- 4,4,4,4,4,4,4,4, # 50 - 57
- 4,4,4,4,4,4,4,4, # 58 - 5f
- 4,4,4,4,4,4,4,4, # 60 - 67
- 4,4,4,4,4,4,4,4, # 68 - 6f
- 4,4,4,4,4,4,4,4, # 70 - 77
- 4,4,4,4,4,4,4,4, # 78 - 7f
- 5,5,5,5,5,5,5,5, # 80 - 87
- 5,5,5,5,5,5,1,3, # 88 - 8f
- 5,5,5,5,5,5,5,5, # 90 - 97
- 5,5,5,5,5,5,5,5, # 98 - 9f
- 5,2,2,2,2,2,2,2, # a0 - a7
- 2,2,2,2,2,2,2,2, # a8 - af
- 2,2,2,2,2,2,2,2, # b0 - b7
- 2,2,2,2,2,2,2,2, # b8 - bf
- 2,2,2,2,2,2,2,2, # c0 - c7
- 2,2,2,2,2,2,2,2, # c8 - cf
- 2,2,2,2,2,2,2,2, # d0 - d7
- 2,2,2,2,2,2,2,2, # d8 - df
- 0,0,0,0,0,0,0,0, # e0 - e7
- 0,0,0,0,0,0,0,0, # e8 - ef
- 0,0,0,0,0,0,0,0, # f0 - f7
- 0,0,0,0,0,0,0,5 # f8 - ff
-)
-
-EUCJP_st = (
- 3, 4, 3, 5,eStart,eError,eError,eError,#00-07
- eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,#08-0f
- eItsMe,eItsMe,eStart,eError,eStart,eError,eError,eError,#10-17
- eError,eError,eStart,eError,eError,eError, 3,eError,#18-1f
- 3,eError,eError,eError,eStart,eStart,eStart,eStart#20-27
-)
-
-EUCJPCharLenTable = (2, 2, 2, 3, 1, 0)
-
-EUCJPSMModel = {'classTable': EUCJP_cls,
- 'classFactor': 6,
- 'stateTable': EUCJP_st,
- 'charLenTable': EUCJPCharLenTable,
- 'name': 'EUC-JP'}
-
-# EUC-KR
-
-EUCKR_cls = (
- 1,1,1,1,1,1,1,1, # 00 - 07
- 1,1,1,1,1,1,0,0, # 08 - 0f
- 1,1,1,1,1,1,1,1, # 10 - 17
- 1,1,1,0,1,1,1,1, # 18 - 1f
- 1,1,1,1,1,1,1,1, # 20 - 27
- 1,1,1,1,1,1,1,1, # 28 - 2f
- 1,1,1,1,1,1,1,1, # 30 - 37
- 1,1,1,1,1,1,1,1, # 38 - 3f
- 1,1,1,1,1,1,1,1, # 40 - 47
- 1,1,1,1,1,1,1,1, # 48 - 4f
- 1,1,1,1,1,1,1,1, # 50 - 57
- 1,1,1,1,1,1,1,1, # 58 - 5f
- 1,1,1,1,1,1,1,1, # 60 - 67
- 1,1,1,1,1,1,1,1, # 68 - 6f
- 1,1,1,1,1,1,1,1, # 70 - 77
- 1,1,1,1,1,1,1,1, # 78 - 7f
- 0,0,0,0,0,0,0,0, # 80 - 87
- 0,0,0,0,0,0,0,0, # 88 - 8f
- 0,0,0,0,0,0,0,0, # 90 - 97
- 0,0,0,0,0,0,0,0, # 98 - 9f
- 0,2,2,2,2,2,2,2, # a0 - a7
- 2,2,2,2,2,3,3,3, # a8 - af
- 2,2,2,2,2,2,2,2, # b0 - b7
- 2,2,2,2,2,2,2,2, # b8 - bf
- 2,2,2,2,2,2,2,2, # c0 - c7
- 2,3,2,2,2,2,2,2, # c8 - cf
- 2,2,2,2,2,2,2,2, # d0 - d7
- 2,2,2,2,2,2,2,2, # d8 - df
- 2,2,2,2,2,2,2,2, # e0 - e7
- 2,2,2,2,2,2,2,2, # e8 - ef
- 2,2,2,2,2,2,2,2, # f0 - f7
- 2,2,2,2,2,2,2,0 # f8 - ff
-)
-
-EUCKR_st = (
- eError,eStart, 3,eError,eError,eError,eError,eError,#00-07
- eItsMe,eItsMe,eItsMe,eItsMe,eError,eError,eStart,eStart #08-0f
-)
-
-EUCKRCharLenTable = (0, 1, 2, 0)
-
-EUCKRSMModel = {'classTable': EUCKR_cls,
- 'classFactor': 4,
- 'stateTable': EUCKR_st,
- 'charLenTable': EUCKRCharLenTable,
- 'name': 'EUC-KR'}
-
-# EUC-TW
-
-EUCTW_cls = (
- 2,2,2,2,2,2,2,2, # 00 - 07
- 2,2,2,2,2,2,0,0, # 08 - 0f
- 2,2,2,2,2,2,2,2, # 10 - 17
- 2,2,2,0,2,2,2,2, # 18 - 1f
- 2,2,2,2,2,2,2,2, # 20 - 27
- 2,2,2,2,2,2,2,2, # 28 - 2f
- 2,2,2,2,2,2,2,2, # 30 - 37
- 2,2,2,2,2,2,2,2, # 38 - 3f
- 2,2,2,2,2,2,2,2, # 40 - 47
- 2,2,2,2,2,2,2,2, # 48 - 4f
- 2,2,2,2,2,2,2,2, # 50 - 57
- 2,2,2,2,2,2,2,2, # 58 - 5f
- 2,2,2,2,2,2,2,2, # 60 - 67
- 2,2,2,2,2,2,2,2, # 68 - 6f
- 2,2,2,2,2,2,2,2, # 70 - 77
- 2,2,2,2,2,2,2,2, # 78 - 7f
- 0,0,0,0,0,0,0,0, # 80 - 87
- 0,0,0,0,0,0,6,0, # 88 - 8f
- 0,0,0,0,0,0,0,0, # 90 - 97
- 0,0,0,0,0,0,0,0, # 98 - 9f
- 0,3,4,4,4,4,4,4, # a0 - a7
- 5,5,1,1,1,1,1,1, # a8 - af
- 1,1,1,1,1,1,1,1, # b0 - b7
- 1,1,1,1,1,1,1,1, # b8 - bf
- 1,1,3,1,3,3,3,3, # c0 - c7
- 3,3,3,3,3,3,3,3, # c8 - cf
- 3,3,3,3,3,3,3,3, # d0 - d7
- 3,3,3,3,3,3,3,3, # d8 - df
- 3,3,3,3,3,3,3,3, # e0 - e7
- 3,3,3,3,3,3,3,3, # e8 - ef
- 3,3,3,3,3,3,3,3, # f0 - f7
- 3,3,3,3,3,3,3,0 # f8 - ff
-)
-
-EUCTW_st = (
- eError,eError,eStart, 3, 3, 3, 4,eError,#00-07
- eError,eError,eError,eError,eError,eError,eItsMe,eItsMe,#08-0f
- eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eError,eStart,eError,#10-17
- eStart,eStart,eStart,eError,eError,eError,eError,eError,#18-1f
- 5,eError,eError,eError,eStart,eError,eStart,eStart,#20-27
- eStart,eError,eStart,eStart,eStart,eStart,eStart,eStart #28-2f
-)
-
-EUCTWCharLenTable = (0, 0, 1, 2, 2, 2, 3)
-
-EUCTWSMModel = {'classTable': EUCTW_cls,
- 'classFactor': 7,
- 'stateTable': EUCTW_st,
- 'charLenTable': EUCTWCharLenTable,
- 'name': 'x-euc-tw'}
-
-# GB2312
-
-GB2312_cls = (
- 1,1,1,1,1,1,1,1, # 00 - 07
- 1,1,1,1,1,1,0,0, # 08 - 0f
- 1,1,1,1,1,1,1,1, # 10 - 17
- 1,1,1,0,1,1,1,1, # 18 - 1f
- 1,1,1,1,1,1,1,1, # 20 - 27
- 1,1,1,1,1,1,1,1, # 28 - 2f
- 3,3,3,3,3,3,3,3, # 30 - 37
- 3,3,1,1,1,1,1,1, # 38 - 3f
- 2,2,2,2,2,2,2,2, # 40 - 47
- 2,2,2,2,2,2,2,2, # 48 - 4f
- 2,2,2,2,2,2,2,2, # 50 - 57
- 2,2,2,2,2,2,2,2, # 58 - 5f
- 2,2,2,2,2,2,2,2, # 60 - 67
- 2,2,2,2,2,2,2,2, # 68 - 6f
- 2,2,2,2,2,2,2,2, # 70 - 77
- 2,2,2,2,2,2,2,4, # 78 - 7f
- 5,6,6,6,6,6,6,6, # 80 - 87
- 6,6,6,6,6,6,6,6, # 88 - 8f
- 6,6,6,6,6,6,6,6, # 90 - 97
- 6,6,6,6,6,6,6,6, # 98 - 9f
- 6,6,6,6,6,6,6,6, # a0 - a7
- 6,6,6,6,6,6,6,6, # a8 - af
- 6,6,6,6,6,6,6,6, # b0 - b7
- 6,6,6,6,6,6,6,6, # b8 - bf
- 6,6,6,6,6,6,6,6, # c0 - c7
- 6,6,6,6,6,6,6,6, # c8 - cf
- 6,6,6,6,6,6,6,6, # d0 - d7
- 6,6,6,6,6,6,6,6, # d8 - df
- 6,6,6,6,6,6,6,6, # e0 - e7
- 6,6,6,6,6,6,6,6, # e8 - ef
- 6,6,6,6,6,6,6,6, # f0 - f7
- 6,6,6,6,6,6,6,0 # f8 - ff
-)
-
-GB2312_st = (
- eError,eStart,eStart,eStart,eStart,eStart, 3,eError,#00-07
- eError,eError,eError,eError,eError,eError,eItsMe,eItsMe,#08-0f
- eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eError,eError,eStart,#10-17
- 4,eError,eStart,eStart,eError,eError,eError,eError,#18-1f
- eError,eError, 5,eError,eError,eError,eItsMe,eError,#20-27
- eError,eError,eStart,eStart,eStart,eStart,eStart,eStart #28-2f
-)
-
-# To be accurate, the length of class 6 can be either 2 or 4.
-# But it is not necessary to discriminate between the two since
-# it is used for frequency analysis only, and we are validing
-# each code range there as well. So it is safe to set it to be
-# 2 here.
-GB2312CharLenTable = (0, 1, 1, 1, 1, 1, 2)
-
-GB2312SMModel = {'classTable': GB2312_cls,
- 'classFactor': 7,
- 'stateTable': GB2312_st,
- 'charLenTable': GB2312CharLenTable,
- 'name': 'GB2312'}
-
-# Shift_JIS
-
-SJIS_cls = (
- 1,1,1,1,1,1,1,1, # 00 - 07
- 1,1,1,1,1,1,0,0, # 08 - 0f
- 1,1,1,1,1,1,1,1, # 10 - 17
- 1,1,1,0,1,1,1,1, # 18 - 1f
- 1,1,1,1,1,1,1,1, # 20 - 27
- 1,1,1,1,1,1,1,1, # 28 - 2f
- 1,1,1,1,1,1,1,1, # 30 - 37
- 1,1,1,1,1,1,1,1, # 38 - 3f
- 2,2,2,2,2,2,2,2, # 40 - 47
- 2,2,2,2,2,2,2,2, # 48 - 4f
- 2,2,2,2,2,2,2,2, # 50 - 57
- 2,2,2,2,2,2,2,2, # 58 - 5f
- 2,2,2,2,2,2,2,2, # 60 - 67
- 2,2,2,2,2,2,2,2, # 68 - 6f
- 2,2,2,2,2,2,2,2, # 70 - 77
- 2,2,2,2,2,2,2,1, # 78 - 7f
- 3,3,3,3,3,3,3,3, # 80 - 87
- 3,3,3,3,3,3,3,3, # 88 - 8f
- 3,3,3,3,3,3,3,3, # 90 - 97
- 3,3,3,3,3,3,3,3, # 98 - 9f
- #0xa0 is illegal in sjis encoding, but some pages does
- #contain such byte. We need to be more error forgiven.
- 2,2,2,2,2,2,2,2, # a0 - a7
- 2,2,2,2,2,2,2,2, # a8 - af
- 2,2,2,2,2,2,2,2, # b0 - b7
- 2,2,2,2,2,2,2,2, # b8 - bf
- 2,2,2,2,2,2,2,2, # c0 - c7
- 2,2,2,2,2,2,2,2, # c8 - cf
- 2,2,2,2,2,2,2,2, # d0 - d7
- 2,2,2,2,2,2,2,2, # d8 - df
- 3,3,3,3,3,3,3,3, # e0 - e7
- 3,3,3,3,3,4,4,4, # e8 - ef
- 4,4,4,4,4,4,4,4, # f0 - f7
- 4,4,4,4,4,0,0,0 # f8 - ff
-)
-
-
-SJIS_st = (
- eError,eStart,eStart, 3,eError,eError,eError,eError,#00-07
- eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,#08-0f
- eItsMe,eItsMe,eError,eError,eStart,eStart,eStart,eStart #10-17
-)
-
-SJISCharLenTable = (0, 1, 1, 2, 0, 0)
-
-SJISSMModel = {'classTable': SJIS_cls,
- 'classFactor': 6,
- 'stateTable': SJIS_st,
- 'charLenTable': SJISCharLenTable,
- 'name': 'Shift_JIS'}
-
-# UCS2-BE
-
-UCS2BE_cls = (
- 0,0,0,0,0,0,0,0, # 00 - 07
- 0,0,1,0,0,2,0,0, # 08 - 0f
- 0,0,0,0,0,0,0,0, # 10 - 17
- 0,0,0,3,0,0,0,0, # 18 - 1f
- 0,0,0,0,0,0,0,0, # 20 - 27
- 0,3,3,3,3,3,0,0, # 28 - 2f
- 0,0,0,0,0,0,0,0, # 30 - 37
- 0,0,0,0,0,0,0,0, # 38 - 3f
- 0,0,0,0,0,0,0,0, # 40 - 47
- 0,0,0,0,0,0,0,0, # 48 - 4f
- 0,0,0,0,0,0,0,0, # 50 - 57
- 0,0,0,0,0,0,0,0, # 58 - 5f
- 0,0,0,0,0,0,0,0, # 60 - 67
- 0,0,0,0,0,0,0,0, # 68 - 6f
- 0,0,0,0,0,0,0,0, # 70 - 77
- 0,0,0,0,0,0,0,0, # 78 - 7f
- 0,0,0,0,0,0,0,0, # 80 - 87
- 0,0,0,0,0,0,0,0, # 88 - 8f
- 0,0,0,0,0,0,0,0, # 90 - 97
- 0,0,0,0,0,0,0,0, # 98 - 9f
- 0,0,0,0,0,0,0,0, # a0 - a7
- 0,0,0,0,0,0,0,0, # a8 - af
- 0,0,0,0,0,0,0,0, # b0 - b7
- 0,0,0,0,0,0,0,0, # b8 - bf
- 0,0,0,0,0,0,0,0, # c0 - c7
- 0,0,0,0,0,0,0,0, # c8 - cf
- 0,0,0,0,0,0,0,0, # d0 - d7
- 0,0,0,0,0,0,0,0, # d8 - df
- 0,0,0,0,0,0,0,0, # e0 - e7
- 0,0,0,0,0,0,0,0, # e8 - ef
- 0,0,0,0,0,0,0,0, # f0 - f7
- 0,0,0,0,0,0,4,5 # f8 - ff
-)
-
-UCS2BE_st = (
- 5, 7, 7,eError, 4, 3,eError,eError,#00-07
- eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,#08-0f
- eItsMe,eItsMe, 6, 6, 6, 6,eError,eError,#10-17
- 6, 6, 6, 6, 6,eItsMe, 6, 6,#18-1f
- 6, 6, 6, 6, 5, 7, 7,eError,#20-27
- 5, 8, 6, 6,eError, 6, 6, 6,#28-2f
- 6, 6, 6, 6,eError,eError,eStart,eStart #30-37
-)
-
-UCS2BECharLenTable = (2, 2, 2, 0, 2, 2)
-
-UCS2BESMModel = {'classTable': UCS2BE_cls,
- 'classFactor': 6,
- 'stateTable': UCS2BE_st,
- 'charLenTable': UCS2BECharLenTable,
- 'name': 'UTF-16BE'}
-
-# UCS2-LE
-
-UCS2LE_cls = (
- 0,0,0,0,0,0,0,0, # 00 - 07
- 0,0,1,0,0,2,0,0, # 08 - 0f
- 0,0,0,0,0,0,0,0, # 10 - 17
- 0,0,0,3,0,0,0,0, # 18 - 1f
- 0,0,0,0,0,0,0,0, # 20 - 27
- 0,3,3,3,3,3,0,0, # 28 - 2f
- 0,0,0,0,0,0,0,0, # 30 - 37
- 0,0,0,0,0,0,0,0, # 38 - 3f
- 0,0,0,0,0,0,0,0, # 40 - 47
- 0,0,0,0,0,0,0,0, # 48 - 4f
- 0,0,0,0,0,0,0,0, # 50 - 57
- 0,0,0,0,0,0,0,0, # 58 - 5f
- 0,0,0,0,0,0,0,0, # 60 - 67
- 0,0,0,0,0,0,0,0, # 68 - 6f
- 0,0,0,0,0,0,0,0, # 70 - 77
- 0,0,0,0,0,0,0,0, # 78 - 7f
- 0,0,0,0,0,0,0,0, # 80 - 87
- 0,0,0,0,0,0,0,0, # 88 - 8f
- 0,0,0,0,0,0,0,0, # 90 - 97
- 0,0,0,0,0,0,0,0, # 98 - 9f
- 0,0,0,0,0,0,0,0, # a0 - a7
- 0,0,0,0,0,0,0,0, # a8 - af
- 0,0,0,0,0,0,0,0, # b0 - b7
- 0,0,0,0,0,0,0,0, # b8 - bf
- 0,0,0,0,0,0,0,0, # c0 - c7
- 0,0,0,0,0,0,0,0, # c8 - cf
- 0,0,0,0,0,0,0,0, # d0 - d7
- 0,0,0,0,0,0,0,0, # d8 - df
- 0,0,0,0,0,0,0,0, # e0 - e7
- 0,0,0,0,0,0,0,0, # e8 - ef
- 0,0,0,0,0,0,0,0, # f0 - f7
- 0,0,0,0,0,0,4,5 # f8 - ff
-)
-
-UCS2LE_st = (
- 6, 6, 7, 6, 4, 3,eError,eError,#00-07
- eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,#08-0f
- eItsMe,eItsMe, 5, 5, 5,eError,eItsMe,eError,#10-17
- 5, 5, 5,eError, 5,eError, 6, 6,#18-1f
- 7, 6, 8, 8, 5, 5, 5,eError,#20-27
- 5, 5, 5,eError,eError,eError, 5, 5,#28-2f
- 5, 5, 5,eError, 5,eError,eStart,eStart #30-37
-)
-
-UCS2LECharLenTable = (2, 2, 2, 2, 2, 2)
-
-UCS2LESMModel = {'classTable': UCS2LE_cls,
- 'classFactor': 6,
- 'stateTable': UCS2LE_st,
- 'charLenTable': UCS2LECharLenTable,
- 'name': 'UTF-16LE'}
-
-# UTF-8
-
-UTF8_cls = (
- 1,1,1,1,1,1,1,1, # 00 - 07 #allow 0x00 as a legal value
- 1,1,1,1,1,1,0,0, # 08 - 0f
- 1,1,1,1,1,1,1,1, # 10 - 17
- 1,1,1,0,1,1,1,1, # 18 - 1f
- 1,1,1,1,1,1,1,1, # 20 - 27
- 1,1,1,1,1,1,1,1, # 28 - 2f
- 1,1,1,1,1,1,1,1, # 30 - 37
- 1,1,1,1,1,1,1,1, # 38 - 3f
- 1,1,1,1,1,1,1,1, # 40 - 47
- 1,1,1,1,1,1,1,1, # 48 - 4f
- 1,1,1,1,1,1,1,1, # 50 - 57
- 1,1,1,1,1,1,1,1, # 58 - 5f
- 1,1,1,1,1,1,1,1, # 60 - 67
- 1,1,1,1,1,1,1,1, # 68 - 6f
- 1,1,1,1,1,1,1,1, # 70 - 77
- 1,1,1,1,1,1,1,1, # 78 - 7f
- 2,2,2,2,3,3,3,3, # 80 - 87
- 4,4,4,4,4,4,4,4, # 88 - 8f
- 4,4,4,4,4,4,4,4, # 90 - 97
- 4,4,4,4,4,4,4,4, # 98 - 9f
- 5,5,5,5,5,5,5,5, # a0 - a7
- 5,5,5,5,5,5,5,5, # a8 - af
- 5,5,5,5,5,5,5,5, # b0 - b7
- 5,5,5,5,5,5,5,5, # b8 - bf
- 0,0,6,6,6,6,6,6, # c0 - c7
- 6,6,6,6,6,6,6,6, # c8 - cf
- 6,6,6,6,6,6,6,6, # d0 - d7
- 6,6,6,6,6,6,6,6, # d8 - df
- 7,8,8,8,8,8,8,8, # e0 - e7
- 8,8,8,8,8,9,8,8, # e8 - ef
- 10,11,11,11,11,11,11,11, # f0 - f7
- 12,13,13,13,14,15,0,0 # f8 - ff
-)
-
-UTF8_st = (
- eError,eStart,eError,eError,eError,eError, 12, 10,#00-07
- 9, 11, 8, 7, 6, 5, 4, 3,#08-0f
- eError,eError,eError,eError,eError,eError,eError,eError,#10-17
- eError,eError,eError,eError,eError,eError,eError,eError,#18-1f
- eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,#20-27
- eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,#28-2f
- eError,eError, 5, 5, 5, 5,eError,eError,#30-37
- eError,eError,eError,eError,eError,eError,eError,eError,#38-3f
- eError,eError,eError, 5, 5, 5,eError,eError,#40-47
- eError,eError,eError,eError,eError,eError,eError,eError,#48-4f
- eError,eError, 7, 7, 7, 7,eError,eError,#50-57
- eError,eError,eError,eError,eError,eError,eError,eError,#58-5f
- eError,eError,eError,eError, 7, 7,eError,eError,#60-67
- eError,eError,eError,eError,eError,eError,eError,eError,#68-6f
- eError,eError, 9, 9, 9, 9,eError,eError,#70-77
- eError,eError,eError,eError,eError,eError,eError,eError,#78-7f
- eError,eError,eError,eError,eError, 9,eError,eError,#80-87
- eError,eError,eError,eError,eError,eError,eError,eError,#88-8f
- eError,eError, 12, 12, 12, 12,eError,eError,#90-97
- eError,eError,eError,eError,eError,eError,eError,eError,#98-9f
- eError,eError,eError,eError,eError, 12,eError,eError,#a0-a7
- eError,eError,eError,eError,eError,eError,eError,eError,#a8-af
- eError,eError, 12, 12, 12,eError,eError,eError,#b0-b7
- eError,eError,eError,eError,eError,eError,eError,eError,#b8-bf
- eError,eError,eStart,eStart,eStart,eStart,eError,eError,#c0-c7
- eError,eError,eError,eError,eError,eError,eError,eError #c8-cf
-)
-
-UTF8CharLenTable = (0, 1, 0, 0, 0, 0, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6)
-
-UTF8SMModel = {'classTable': UTF8_cls,
- 'classFactor': 16,
- 'stateTable': UTF8_st,
- 'charLenTable': UTF8CharLenTable,
- 'name': 'UTF-8'}
-
-# flake8: noqa
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is mozilla.org code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+from .constants import eStart, eError, eItsMe
+
+# BIG5
+
+BIG5_cls = (
+ 1,1,1,1,1,1,1,1, # 00 - 07 #allow 0x00 as legal value
+ 1,1,1,1,1,1,0,0, # 08 - 0f
+ 1,1,1,1,1,1,1,1, # 10 - 17
+ 1,1,1,0,1,1,1,1, # 18 - 1f
+ 1,1,1,1,1,1,1,1, # 20 - 27
+ 1,1,1,1,1,1,1,1, # 28 - 2f
+ 1,1,1,1,1,1,1,1, # 30 - 37
+ 1,1,1,1,1,1,1,1, # 38 - 3f
+ 2,2,2,2,2,2,2,2, # 40 - 47
+ 2,2,2,2,2,2,2,2, # 48 - 4f
+ 2,2,2,2,2,2,2,2, # 50 - 57
+ 2,2,2,2,2,2,2,2, # 58 - 5f
+ 2,2,2,2,2,2,2,2, # 60 - 67
+ 2,2,2,2,2,2,2,2, # 68 - 6f
+ 2,2,2,2,2,2,2,2, # 70 - 77
+ 2,2,2,2,2,2,2,1, # 78 - 7f
+ 4,4,4,4,4,4,4,4, # 80 - 87
+ 4,4,4,4,4,4,4,4, # 88 - 8f
+ 4,4,4,4,4,4,4,4, # 90 - 97
+ 4,4,4,4,4,4,4,4, # 98 - 9f
+ 4,3,3,3,3,3,3,3, # a0 - a7
+ 3,3,3,3,3,3,3,3, # a8 - af
+ 3,3,3,3,3,3,3,3, # b0 - b7
+ 3,3,3,3,3,3,3,3, # b8 - bf
+ 3,3,3,3,3,3,3,3, # c0 - c7
+ 3,3,3,3,3,3,3,3, # c8 - cf
+ 3,3,3,3,3,3,3,3, # d0 - d7
+ 3,3,3,3,3,3,3,3, # d8 - df
+ 3,3,3,3,3,3,3,3, # e0 - e7
+ 3,3,3,3,3,3,3,3, # e8 - ef
+ 3,3,3,3,3,3,3,3, # f0 - f7
+ 3,3,3,3,3,3,3,0 # f8 - ff
+)
+
+BIG5_st = (
+ eError,eStart,eStart, 3,eError,eError,eError,eError,#00-07
+ eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eError,#08-0f
+ eError,eStart,eStart,eStart,eStart,eStart,eStart,eStart#10-17
+)
+
+Big5CharLenTable = (0, 1, 1, 2, 0)
+
+Big5SMModel = {'classTable': BIG5_cls,
+ 'classFactor': 5,
+ 'stateTable': BIG5_st,
+ 'charLenTable': Big5CharLenTable,
+ 'name': 'Big5'}
+
+# EUC-JP
+
+EUCJP_cls = (
+ 4,4,4,4,4,4,4,4, # 00 - 07
+ 4,4,4,4,4,4,5,5, # 08 - 0f
+ 4,4,4,4,4,4,4,4, # 10 - 17
+ 4,4,4,5,4,4,4,4, # 18 - 1f
+ 4,4,4,4,4,4,4,4, # 20 - 27
+ 4,4,4,4,4,4,4,4, # 28 - 2f
+ 4,4,4,4,4,4,4,4, # 30 - 37
+ 4,4,4,4,4,4,4,4, # 38 - 3f
+ 4,4,4,4,4,4,4,4, # 40 - 47
+ 4,4,4,4,4,4,4,4, # 48 - 4f
+ 4,4,4,4,4,4,4,4, # 50 - 57
+ 4,4,4,4,4,4,4,4, # 58 - 5f
+ 4,4,4,4,4,4,4,4, # 60 - 67
+ 4,4,4,4,4,4,4,4, # 68 - 6f
+ 4,4,4,4,4,4,4,4, # 70 - 77
+ 4,4,4,4,4,4,4,4, # 78 - 7f
+ 5,5,5,5,5,5,5,5, # 80 - 87
+ 5,5,5,5,5,5,1,3, # 88 - 8f
+ 5,5,5,5,5,5,5,5, # 90 - 97
+ 5,5,5,5,5,5,5,5, # 98 - 9f
+ 5,2,2,2,2,2,2,2, # a0 - a7
+ 2,2,2,2,2,2,2,2, # a8 - af
+ 2,2,2,2,2,2,2,2, # b0 - b7
+ 2,2,2,2,2,2,2,2, # b8 - bf
+ 2,2,2,2,2,2,2,2, # c0 - c7
+ 2,2,2,2,2,2,2,2, # c8 - cf
+ 2,2,2,2,2,2,2,2, # d0 - d7
+ 2,2,2,2,2,2,2,2, # d8 - df
+ 0,0,0,0,0,0,0,0, # e0 - e7
+ 0,0,0,0,0,0,0,0, # e8 - ef
+ 0,0,0,0,0,0,0,0, # f0 - f7
+ 0,0,0,0,0,0,0,5 # f8 - ff
+)
+
+EUCJP_st = (
+ 3, 4, 3, 5,eStart,eError,eError,eError,#00-07
+ eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,#08-0f
+ eItsMe,eItsMe,eStart,eError,eStart,eError,eError,eError,#10-17
+ eError,eError,eStart,eError,eError,eError, 3,eError,#18-1f
+ 3,eError,eError,eError,eStart,eStart,eStart,eStart#20-27
+)
+
+EUCJPCharLenTable = (2, 2, 2, 3, 1, 0)
+
+EUCJPSMModel = {'classTable': EUCJP_cls,
+ 'classFactor': 6,
+ 'stateTable': EUCJP_st,
+ 'charLenTable': EUCJPCharLenTable,
+ 'name': 'EUC-JP'}
+
+# EUC-KR
+
+EUCKR_cls = (
+ 1,1,1,1,1,1,1,1, # 00 - 07
+ 1,1,1,1,1,1,0,0, # 08 - 0f
+ 1,1,1,1,1,1,1,1, # 10 - 17
+ 1,1,1,0,1,1,1,1, # 18 - 1f
+ 1,1,1,1,1,1,1,1, # 20 - 27
+ 1,1,1,1,1,1,1,1, # 28 - 2f
+ 1,1,1,1,1,1,1,1, # 30 - 37
+ 1,1,1,1,1,1,1,1, # 38 - 3f
+ 1,1,1,1,1,1,1,1, # 40 - 47
+ 1,1,1,1,1,1,1,1, # 48 - 4f
+ 1,1,1,1,1,1,1,1, # 50 - 57
+ 1,1,1,1,1,1,1,1, # 58 - 5f
+ 1,1,1,1,1,1,1,1, # 60 - 67
+ 1,1,1,1,1,1,1,1, # 68 - 6f
+ 1,1,1,1,1,1,1,1, # 70 - 77
+ 1,1,1,1,1,1,1,1, # 78 - 7f
+ 0,0,0,0,0,0,0,0, # 80 - 87
+ 0,0,0,0,0,0,0,0, # 88 - 8f
+ 0,0,0,0,0,0,0,0, # 90 - 97
+ 0,0,0,0,0,0,0,0, # 98 - 9f
+ 0,2,2,2,2,2,2,2, # a0 - a7
+ 2,2,2,2,2,3,3,3, # a8 - af
+ 2,2,2,2,2,2,2,2, # b0 - b7
+ 2,2,2,2,2,2,2,2, # b8 - bf
+ 2,2,2,2,2,2,2,2, # c0 - c7
+ 2,3,2,2,2,2,2,2, # c8 - cf
+ 2,2,2,2,2,2,2,2, # d0 - d7
+ 2,2,2,2,2,2,2,2, # d8 - df
+ 2,2,2,2,2,2,2,2, # e0 - e7
+ 2,2,2,2,2,2,2,2, # e8 - ef
+ 2,2,2,2,2,2,2,2, # f0 - f7
+ 2,2,2,2,2,2,2,0 # f8 - ff
+)
+
+EUCKR_st = (
+ eError,eStart, 3,eError,eError,eError,eError,eError,#00-07
+ eItsMe,eItsMe,eItsMe,eItsMe,eError,eError,eStart,eStart #08-0f
+)
+
+EUCKRCharLenTable = (0, 1, 2, 0)
+
+EUCKRSMModel = {'classTable': EUCKR_cls,
+ 'classFactor': 4,
+ 'stateTable': EUCKR_st,
+ 'charLenTable': EUCKRCharLenTable,
+ 'name': 'EUC-KR'}
+
+# EUC-TW
+
+EUCTW_cls = (
+ 2,2,2,2,2,2,2,2, # 00 - 07
+ 2,2,2,2,2,2,0,0, # 08 - 0f
+ 2,2,2,2,2,2,2,2, # 10 - 17
+ 2,2,2,0,2,2,2,2, # 18 - 1f
+ 2,2,2,2,2,2,2,2, # 20 - 27
+ 2,2,2,2,2,2,2,2, # 28 - 2f
+ 2,2,2,2,2,2,2,2, # 30 - 37
+ 2,2,2,2,2,2,2,2, # 38 - 3f
+ 2,2,2,2,2,2,2,2, # 40 - 47
+ 2,2,2,2,2,2,2,2, # 48 - 4f
+ 2,2,2,2,2,2,2,2, # 50 - 57
+ 2,2,2,2,2,2,2,2, # 58 - 5f
+ 2,2,2,2,2,2,2,2, # 60 - 67
+ 2,2,2,2,2,2,2,2, # 68 - 6f
+ 2,2,2,2,2,2,2,2, # 70 - 77
+ 2,2,2,2,2,2,2,2, # 78 - 7f
+ 0,0,0,0,0,0,0,0, # 80 - 87
+ 0,0,0,0,0,0,6,0, # 88 - 8f
+ 0,0,0,0,0,0,0,0, # 90 - 97
+ 0,0,0,0,0,0,0,0, # 98 - 9f
+ 0,3,4,4,4,4,4,4, # a0 - a7
+ 5,5,1,1,1,1,1,1, # a8 - af
+ 1,1,1,1,1,1,1,1, # b0 - b7
+ 1,1,1,1,1,1,1,1, # b8 - bf
+ 1,1,3,1,3,3,3,3, # c0 - c7
+ 3,3,3,3,3,3,3,3, # c8 - cf
+ 3,3,3,3,3,3,3,3, # d0 - d7
+ 3,3,3,3,3,3,3,3, # d8 - df
+ 3,3,3,3,3,3,3,3, # e0 - e7
+ 3,3,3,3,3,3,3,3, # e8 - ef
+ 3,3,3,3,3,3,3,3, # f0 - f7
+ 3,3,3,3,3,3,3,0 # f8 - ff
+)
+
+EUCTW_st = (
+ eError,eError,eStart, 3, 3, 3, 4,eError,#00-07
+ eError,eError,eError,eError,eError,eError,eItsMe,eItsMe,#08-0f
+ eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eError,eStart,eError,#10-17
+ eStart,eStart,eStart,eError,eError,eError,eError,eError,#18-1f
+ 5,eError,eError,eError,eStart,eError,eStart,eStart,#20-27
+ eStart,eError,eStart,eStart,eStart,eStart,eStart,eStart #28-2f
+)
+
+EUCTWCharLenTable = (0, 0, 1, 2, 2, 2, 3)
+
+EUCTWSMModel = {'classTable': EUCTW_cls,
+ 'classFactor': 7,
+ 'stateTable': EUCTW_st,
+ 'charLenTable': EUCTWCharLenTable,
+ 'name': 'x-euc-tw'}
+
+# GB2312
+
+GB2312_cls = (
+ 1,1,1,1,1,1,1,1, # 00 - 07
+ 1,1,1,1,1,1,0,0, # 08 - 0f
+ 1,1,1,1,1,1,1,1, # 10 - 17
+ 1,1,1,0,1,1,1,1, # 18 - 1f
+ 1,1,1,1,1,1,1,1, # 20 - 27
+ 1,1,1,1,1,1,1,1, # 28 - 2f
+ 3,3,3,3,3,3,3,3, # 30 - 37
+ 3,3,1,1,1,1,1,1, # 38 - 3f
+ 2,2,2,2,2,2,2,2, # 40 - 47
+ 2,2,2,2,2,2,2,2, # 48 - 4f
+ 2,2,2,2,2,2,2,2, # 50 - 57
+ 2,2,2,2,2,2,2,2, # 58 - 5f
+ 2,2,2,2,2,2,2,2, # 60 - 67
+ 2,2,2,2,2,2,2,2, # 68 - 6f
+ 2,2,2,2,2,2,2,2, # 70 - 77
+ 2,2,2,2,2,2,2,4, # 78 - 7f
+ 5,6,6,6,6,6,6,6, # 80 - 87
+ 6,6,6,6,6,6,6,6, # 88 - 8f
+ 6,6,6,6,6,6,6,6, # 90 - 97
+ 6,6,6,6,6,6,6,6, # 98 - 9f
+ 6,6,6,6,6,6,6,6, # a0 - a7
+ 6,6,6,6,6,6,6,6, # a8 - af
+ 6,6,6,6,6,6,6,6, # b0 - b7
+ 6,6,6,6,6,6,6,6, # b8 - bf
+ 6,6,6,6,6,6,6,6, # c0 - c7
+ 6,6,6,6,6,6,6,6, # c8 - cf
+ 6,6,6,6,6,6,6,6, # d0 - d7
+ 6,6,6,6,6,6,6,6, # d8 - df
+ 6,6,6,6,6,6,6,6, # e0 - e7
+ 6,6,6,6,6,6,6,6, # e8 - ef
+ 6,6,6,6,6,6,6,6, # f0 - f7
+ 6,6,6,6,6,6,6,0 # f8 - ff
+)
+
+GB2312_st = (
+ eError,eStart,eStart,eStart,eStart,eStart, 3,eError,#00-07
+ eError,eError,eError,eError,eError,eError,eItsMe,eItsMe,#08-0f
+ eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eError,eError,eStart,#10-17
+ 4,eError,eStart,eStart,eError,eError,eError,eError,#18-1f
+ eError,eError, 5,eError,eError,eError,eItsMe,eError,#20-27
+ eError,eError,eStart,eStart,eStart,eStart,eStart,eStart #28-2f
+)
+
+# To be accurate, the length of class 6 can be either 2 or 4.
+# But it is not necessary to discriminate between the two since
+# it is used for frequency analysis only, and we are validing
+# each code range there as well. So it is safe to set it to be
+# 2 here.
+GB2312CharLenTable = (0, 1, 1, 1, 1, 1, 2)
+
+GB2312SMModel = {'classTable': GB2312_cls,
+ 'classFactor': 7,
+ 'stateTable': GB2312_st,
+ 'charLenTable': GB2312CharLenTable,
+ 'name': 'GB2312'}
+
+# Shift_JIS
+
+SJIS_cls = (
+ 1,1,1,1,1,1,1,1, # 00 - 07
+ 1,1,1,1,1,1,0,0, # 08 - 0f
+ 1,1,1,1,1,1,1,1, # 10 - 17
+ 1,1,1,0,1,1,1,1, # 18 - 1f
+ 1,1,1,1,1,1,1,1, # 20 - 27
+ 1,1,1,1,1,1,1,1, # 28 - 2f
+ 1,1,1,1,1,1,1,1, # 30 - 37
+ 1,1,1,1,1,1,1,1, # 38 - 3f
+ 2,2,2,2,2,2,2,2, # 40 - 47
+ 2,2,2,2,2,2,2,2, # 48 - 4f
+ 2,2,2,2,2,2,2,2, # 50 - 57
+ 2,2,2,2,2,2,2,2, # 58 - 5f
+ 2,2,2,2,2,2,2,2, # 60 - 67
+ 2,2,2,2,2,2,2,2, # 68 - 6f
+ 2,2,2,2,2,2,2,2, # 70 - 77
+ 2,2,2,2,2,2,2,1, # 78 - 7f
+ 3,3,3,3,3,3,3,3, # 80 - 87
+ 3,3,3,3,3,3,3,3, # 88 - 8f
+ 3,3,3,3,3,3,3,3, # 90 - 97
+ 3,3,3,3,3,3,3,3, # 98 - 9f
+ #0xa0 is illegal in sjis encoding, but some pages does
+ #contain such byte. We need to be more error forgiven.
+ 2,2,2,2,2,2,2,2, # a0 - a7
+ 2,2,2,2,2,2,2,2, # a8 - af
+ 2,2,2,2,2,2,2,2, # b0 - b7
+ 2,2,2,2,2,2,2,2, # b8 - bf
+ 2,2,2,2,2,2,2,2, # c0 - c7
+ 2,2,2,2,2,2,2,2, # c8 - cf
+ 2,2,2,2,2,2,2,2, # d0 - d7
+ 2,2,2,2,2,2,2,2, # d8 - df
+ 3,3,3,3,3,3,3,3, # e0 - e7
+ 3,3,3,3,3,4,4,4, # e8 - ef
+ 4,4,4,4,4,4,4,4, # f0 - f7
+ 4,4,4,4,4,0,0,0 # f8 - ff
+)
+
+
+SJIS_st = (
+ eError,eStart,eStart, 3,eError,eError,eError,eError,#00-07
+ eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,#08-0f
+ eItsMe,eItsMe,eError,eError,eStart,eStart,eStart,eStart #10-17
+)
+
+SJISCharLenTable = (0, 1, 1, 2, 0, 0)
+
+SJISSMModel = {'classTable': SJIS_cls,
+ 'classFactor': 6,
+ 'stateTable': SJIS_st,
+ 'charLenTable': SJISCharLenTable,
+ 'name': 'Shift_JIS'}
+
+# UCS2-BE
+
+UCS2BE_cls = (
+ 0,0,0,0,0,0,0,0, # 00 - 07
+ 0,0,1,0,0,2,0,0, # 08 - 0f
+ 0,0,0,0,0,0,0,0, # 10 - 17
+ 0,0,0,3,0,0,0,0, # 18 - 1f
+ 0,0,0,0,0,0,0,0, # 20 - 27
+ 0,3,3,3,3,3,0,0, # 28 - 2f
+ 0,0,0,0,0,0,0,0, # 30 - 37
+ 0,0,0,0,0,0,0,0, # 38 - 3f
+ 0,0,0,0,0,0,0,0, # 40 - 47
+ 0,0,0,0,0,0,0,0, # 48 - 4f
+ 0,0,0,0,0,0,0,0, # 50 - 57
+ 0,0,0,0,0,0,0,0, # 58 - 5f
+ 0,0,0,0,0,0,0,0, # 60 - 67
+ 0,0,0,0,0,0,0,0, # 68 - 6f
+ 0,0,0,0,0,0,0,0, # 70 - 77
+ 0,0,0,0,0,0,0,0, # 78 - 7f
+ 0,0,0,0,0,0,0,0, # 80 - 87
+ 0,0,0,0,0,0,0,0, # 88 - 8f
+ 0,0,0,0,0,0,0,0, # 90 - 97
+ 0,0,0,0,0,0,0,0, # 98 - 9f
+ 0,0,0,0,0,0,0,0, # a0 - a7
+ 0,0,0,0,0,0,0,0, # a8 - af
+ 0,0,0,0,0,0,0,0, # b0 - b7
+ 0,0,0,0,0,0,0,0, # b8 - bf
+ 0,0,0,0,0,0,0,0, # c0 - c7
+ 0,0,0,0,0,0,0,0, # c8 - cf
+ 0,0,0,0,0,0,0,0, # d0 - d7
+ 0,0,0,0,0,0,0,0, # d8 - df
+ 0,0,0,0,0,0,0,0, # e0 - e7
+ 0,0,0,0,0,0,0,0, # e8 - ef
+ 0,0,0,0,0,0,0,0, # f0 - f7
+ 0,0,0,0,0,0,4,5 # f8 - ff
+)
+
+UCS2BE_st = (
+ 5, 7, 7,eError, 4, 3,eError,eError,#00-07
+ eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,#08-0f
+ eItsMe,eItsMe, 6, 6, 6, 6,eError,eError,#10-17
+ 6, 6, 6, 6, 6,eItsMe, 6, 6,#18-1f
+ 6, 6, 6, 6, 5, 7, 7,eError,#20-27
+ 5, 8, 6, 6,eError, 6, 6, 6,#28-2f
+ 6, 6, 6, 6,eError,eError,eStart,eStart #30-37
+)
+
+UCS2BECharLenTable = (2, 2, 2, 0, 2, 2)
+
+UCS2BESMModel = {'classTable': UCS2BE_cls,
+ 'classFactor': 6,
+ 'stateTable': UCS2BE_st,
+ 'charLenTable': UCS2BECharLenTable,
+ 'name': 'UTF-16BE'}
+
+# UCS2-LE
+
+UCS2LE_cls = (
+ 0,0,0,0,0,0,0,0, # 00 - 07
+ 0,0,1,0,0,2,0,0, # 08 - 0f
+ 0,0,0,0,0,0,0,0, # 10 - 17
+ 0,0,0,3,0,0,0,0, # 18 - 1f
+ 0,0,0,0,0,0,0,0, # 20 - 27
+ 0,3,3,3,3,3,0,0, # 28 - 2f
+ 0,0,0,0,0,0,0,0, # 30 - 37
+ 0,0,0,0,0,0,0,0, # 38 - 3f
+ 0,0,0,0,0,0,0,0, # 40 - 47
+ 0,0,0,0,0,0,0,0, # 48 - 4f
+ 0,0,0,0,0,0,0,0, # 50 - 57
+ 0,0,0,0,0,0,0,0, # 58 - 5f
+ 0,0,0,0,0,0,0,0, # 60 - 67
+ 0,0,0,0,0,0,0,0, # 68 - 6f
+ 0,0,0,0,0,0,0,0, # 70 - 77
+ 0,0,0,0,0,0,0,0, # 78 - 7f
+ 0,0,0,0,0,0,0,0, # 80 - 87
+ 0,0,0,0,0,0,0,0, # 88 - 8f
+ 0,0,0,0,0,0,0,0, # 90 - 97
+ 0,0,0,0,0,0,0,0, # 98 - 9f
+ 0,0,0,0,0,0,0,0, # a0 - a7
+ 0,0,0,0,0,0,0,0, # a8 - af
+ 0,0,0,0,0,0,0,0, # b0 - b7
+ 0,0,0,0,0,0,0,0, # b8 - bf
+ 0,0,0,0,0,0,0,0, # c0 - c7
+ 0,0,0,0,0,0,0,0, # c8 - cf
+ 0,0,0,0,0,0,0,0, # d0 - d7
+ 0,0,0,0,0,0,0,0, # d8 - df
+ 0,0,0,0,0,0,0,0, # e0 - e7
+ 0,0,0,0,0,0,0,0, # e8 - ef
+ 0,0,0,0,0,0,0,0, # f0 - f7
+ 0,0,0,0,0,0,4,5 # f8 - ff
+)
+
+UCS2LE_st = (
+ 6, 6, 7, 6, 4, 3,eError,eError,#00-07
+ eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,#08-0f
+ eItsMe,eItsMe, 5, 5, 5,eError,eItsMe,eError,#10-17
+ 5, 5, 5,eError, 5,eError, 6, 6,#18-1f
+ 7, 6, 8, 8, 5, 5, 5,eError,#20-27
+ 5, 5, 5,eError,eError,eError, 5, 5,#28-2f
+ 5, 5, 5,eError, 5,eError,eStart,eStart #30-37
+)
+
+UCS2LECharLenTable = (2, 2, 2, 2, 2, 2)
+
+UCS2LESMModel = {'classTable': UCS2LE_cls,
+ 'classFactor': 6,
+ 'stateTable': UCS2LE_st,
+ 'charLenTable': UCS2LECharLenTable,
+ 'name': 'UTF-16LE'}
+
+# UTF-8
+
+UTF8_cls = (
+ 1,1,1,1,1,1,1,1, # 00 - 07 #allow 0x00 as a legal value
+ 1,1,1,1,1,1,0,0, # 08 - 0f
+ 1,1,1,1,1,1,1,1, # 10 - 17
+ 1,1,1,0,1,1,1,1, # 18 - 1f
+ 1,1,1,1,1,1,1,1, # 20 - 27
+ 1,1,1,1,1,1,1,1, # 28 - 2f
+ 1,1,1,1,1,1,1,1, # 30 - 37
+ 1,1,1,1,1,1,1,1, # 38 - 3f
+ 1,1,1,1,1,1,1,1, # 40 - 47
+ 1,1,1,1,1,1,1,1, # 48 - 4f
+ 1,1,1,1,1,1,1,1, # 50 - 57
+ 1,1,1,1,1,1,1,1, # 58 - 5f
+ 1,1,1,1,1,1,1,1, # 60 - 67
+ 1,1,1,1,1,1,1,1, # 68 - 6f
+ 1,1,1,1,1,1,1,1, # 70 - 77
+ 1,1,1,1,1,1,1,1, # 78 - 7f
+ 2,2,2,2,3,3,3,3, # 80 - 87
+ 4,4,4,4,4,4,4,4, # 88 - 8f
+ 4,4,4,4,4,4,4,4, # 90 - 97
+ 4,4,4,4,4,4,4,4, # 98 - 9f
+ 5,5,5,5,5,5,5,5, # a0 - a7
+ 5,5,5,5,5,5,5,5, # a8 - af
+ 5,5,5,5,5,5,5,5, # b0 - b7
+ 5,5,5,5,5,5,5,5, # b8 - bf
+ 0,0,6,6,6,6,6,6, # c0 - c7
+ 6,6,6,6,6,6,6,6, # c8 - cf
+ 6,6,6,6,6,6,6,6, # d0 - d7
+ 6,6,6,6,6,6,6,6, # d8 - df
+ 7,8,8,8,8,8,8,8, # e0 - e7
+ 8,8,8,8,8,9,8,8, # e8 - ef
+ 10,11,11,11,11,11,11,11, # f0 - f7
+ 12,13,13,13,14,15,0,0 # f8 - ff
+)
+
+UTF8_st = (
+ eError,eStart,eError,eError,eError,eError, 12, 10,#00-07
+ 9, 11, 8, 7, 6, 5, 4, 3,#08-0f
+ eError,eError,eError,eError,eError,eError,eError,eError,#10-17
+ eError,eError,eError,eError,eError,eError,eError,eError,#18-1f
+ eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,#20-27
+ eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,#28-2f
+ eError,eError, 5, 5, 5, 5,eError,eError,#30-37
+ eError,eError,eError,eError,eError,eError,eError,eError,#38-3f
+ eError,eError,eError, 5, 5, 5,eError,eError,#40-47
+ eError,eError,eError,eError,eError,eError,eError,eError,#48-4f
+ eError,eError, 7, 7, 7, 7,eError,eError,#50-57
+ eError,eError,eError,eError,eError,eError,eError,eError,#58-5f
+ eError,eError,eError,eError, 7, 7,eError,eError,#60-67
+ eError,eError,eError,eError,eError,eError,eError,eError,#68-6f
+ eError,eError, 9, 9, 9, 9,eError,eError,#70-77
+ eError,eError,eError,eError,eError,eError,eError,eError,#78-7f
+ eError,eError,eError,eError,eError, 9,eError,eError,#80-87
+ eError,eError,eError,eError,eError,eError,eError,eError,#88-8f
+ eError,eError, 12, 12, 12, 12,eError,eError,#90-97
+ eError,eError,eError,eError,eError,eError,eError,eError,#98-9f
+ eError,eError,eError,eError,eError, 12,eError,eError,#a0-a7
+ eError,eError,eError,eError,eError,eError,eError,eError,#a8-af
+ eError,eError, 12, 12, 12,eError,eError,eError,#b0-b7
+ eError,eError,eError,eError,eError,eError,eError,eError,#b8-bf
+ eError,eError,eStart,eStart,eStart,eStart,eError,eError,#c0-c7
+ eError,eError,eError,eError,eError,eError,eError,eError #c8-cf
+)
+
+UTF8CharLenTable = (0, 1, 0, 0, 0, 0, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6)
+
+UTF8SMModel = {'classTable': UTF8_cls,
+ 'classFactor': 16,
+ 'stateTable': UTF8_st,
+ 'charLenTable': UTF8CharLenTable,
+ 'name': 'UTF-8'}
+
+# flake8: noqa
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/sbcharsetprober.py b/app/src/processing/app/i18n/python/requests/packages/charade/sbcharsetprober.py
index da26715cfcd..37291bd27a9 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/sbcharsetprober.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/sbcharsetprober.py
@@ -1,120 +1,120 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is Mozilla Universal charset detector code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 2001
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-# Shy Shalom - original C code
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-import sys
-from . import constants
-from .charsetprober import CharSetProber
-from .compat import wrap_ord
-
-SAMPLE_SIZE = 64
-SB_ENOUGH_REL_THRESHOLD = 1024
-POSITIVE_SHORTCUT_THRESHOLD = 0.95
-NEGATIVE_SHORTCUT_THRESHOLD = 0.05
-SYMBOL_CAT_ORDER = 250
-NUMBER_OF_SEQ_CAT = 4
-POSITIVE_CAT = NUMBER_OF_SEQ_CAT - 1
-#NEGATIVE_CAT = 0
-
-
-class SingleByteCharSetProber(CharSetProber):
- def __init__(self, model, reversed=False, nameProber=None):
- CharSetProber.__init__(self)
- self._mModel = model
- # TRUE if we need to reverse every pair in the model lookup
- self._mReversed = reversed
- # Optional auxiliary prober for name decision
- self._mNameProber = nameProber
- self.reset()
-
- def reset(self):
- CharSetProber.reset(self)
- # char order of last character
- self._mLastOrder = 255
- self._mSeqCounters = [0] * NUMBER_OF_SEQ_CAT
- self._mTotalSeqs = 0
- self._mTotalChar = 0
- # characters that fall in our sampling range
- self._mFreqChar = 0
-
- def get_charset_name(self):
- if self._mNameProber:
- return self._mNameProber.get_charset_name()
- else:
- return self._mModel['charsetName']
-
- def feed(self, aBuf):
- if not self._mModel['keepEnglishLetter']:
- aBuf = self.filter_without_english_letters(aBuf)
- aLen = len(aBuf)
- if not aLen:
- return self.get_state()
- for c in aBuf:
- order = self._mModel['charToOrderMap'][wrap_ord(c)]
- if order < SYMBOL_CAT_ORDER:
- self._mTotalChar += 1
- if order < SAMPLE_SIZE:
- self._mFreqChar += 1
- if self._mLastOrder < SAMPLE_SIZE:
- self._mTotalSeqs += 1
- if not self._mReversed:
- i = (self._mLastOrder * SAMPLE_SIZE) + order
- model = self._mModel['precedenceMatrix'][i]
- else: # reverse the order of the letters in the lookup
- i = (order * SAMPLE_SIZE) + self._mLastOrder
- model = self._mModel['precedenceMatrix'][i]
- self._mSeqCounters[model] += 1
- self._mLastOrder = order
-
- if self.get_state() == constants.eDetecting:
- if self._mTotalSeqs > SB_ENOUGH_REL_THRESHOLD:
- cf = self.get_confidence()
- if cf > POSITIVE_SHORTCUT_THRESHOLD:
- if constants._debug:
- sys.stderr.write('%s confidence = %s, we have a'
- 'winner\n' %
- (self._mModel['charsetName'], cf))
- self._mState = constants.eFoundIt
- elif cf < NEGATIVE_SHORTCUT_THRESHOLD:
- if constants._debug:
- sys.stderr.write('%s confidence = %s, below negative'
- 'shortcut threshhold %s\n' %
- (self._mModel['charsetName'], cf,
- NEGATIVE_SHORTCUT_THRESHOLD))
- self._mState = constants.eNotMe
-
- return self.get_state()
-
- def get_confidence(self):
- r = 0.01
- if self._mTotalSeqs > 0:
- r = ((1.0 * self._mSeqCounters[POSITIVE_CAT]) / self._mTotalSeqs
- / self._mModel['mTypicalPositiveRatio'])
- r = r * self._mFreqChar / self._mTotalChar
- if r >= 1.0:
- r = 0.99
- return r
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is Mozilla Universal charset detector code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 2001
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+# Shy Shalom - original C code
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+import sys
+from . import constants
+from .charsetprober import CharSetProber
+from .compat import wrap_ord
+
+SAMPLE_SIZE = 64
+SB_ENOUGH_REL_THRESHOLD = 1024
+POSITIVE_SHORTCUT_THRESHOLD = 0.95
+NEGATIVE_SHORTCUT_THRESHOLD = 0.05
+SYMBOL_CAT_ORDER = 250
+NUMBER_OF_SEQ_CAT = 4
+POSITIVE_CAT = NUMBER_OF_SEQ_CAT - 1
+#NEGATIVE_CAT = 0
+
+
+class SingleByteCharSetProber(CharSetProber):
+ def __init__(self, model, reversed=False, nameProber=None):
+ CharSetProber.__init__(self)
+ self._mModel = model
+ # TRUE if we need to reverse every pair in the model lookup
+ self._mReversed = reversed
+ # Optional auxiliary prober for name decision
+ self._mNameProber = nameProber
+ self.reset()
+
+ def reset(self):
+ CharSetProber.reset(self)
+ # char order of last character
+ self._mLastOrder = 255
+ self._mSeqCounters = [0] * NUMBER_OF_SEQ_CAT
+ self._mTotalSeqs = 0
+ self._mTotalChar = 0
+ # characters that fall in our sampling range
+ self._mFreqChar = 0
+
+ def get_charset_name(self):
+ if self._mNameProber:
+ return self._mNameProber.get_charset_name()
+ else:
+ return self._mModel['charsetName']
+
+ def feed(self, aBuf):
+ if not self._mModel['keepEnglishLetter']:
+ aBuf = self.filter_without_english_letters(aBuf)
+ aLen = len(aBuf)
+ if not aLen:
+ return self.get_state()
+ for c in aBuf:
+ order = self._mModel['charToOrderMap'][wrap_ord(c)]
+ if order < SYMBOL_CAT_ORDER:
+ self._mTotalChar += 1
+ if order < SAMPLE_SIZE:
+ self._mFreqChar += 1
+ if self._mLastOrder < SAMPLE_SIZE:
+ self._mTotalSeqs += 1
+ if not self._mReversed:
+ i = (self._mLastOrder * SAMPLE_SIZE) + order
+ model = self._mModel['precedenceMatrix'][i]
+ else: # reverse the order of the letters in the lookup
+ i = (order * SAMPLE_SIZE) + self._mLastOrder
+ model = self._mModel['precedenceMatrix'][i]
+ self._mSeqCounters[model] += 1
+ self._mLastOrder = order
+
+ if self.get_state() == constants.eDetecting:
+ if self._mTotalSeqs > SB_ENOUGH_REL_THRESHOLD:
+ cf = self.get_confidence()
+ if cf > POSITIVE_SHORTCUT_THRESHOLD:
+ if constants._debug:
+ sys.stderr.write('%s confidence = %s, we have a'
+ 'winner\n' %
+ (self._mModel['charsetName'], cf))
+ self._mState = constants.eFoundIt
+ elif cf < NEGATIVE_SHORTCUT_THRESHOLD:
+ if constants._debug:
+ sys.stderr.write('%s confidence = %s, below negative'
+ 'shortcut threshhold %s\n' %
+ (self._mModel['charsetName'], cf,
+ NEGATIVE_SHORTCUT_THRESHOLD))
+ self._mState = constants.eNotMe
+
+ return self.get_state()
+
+ def get_confidence(self):
+ r = 0.01
+ if self._mTotalSeqs > 0:
+ r = ((1.0 * self._mSeqCounters[POSITIVE_CAT]) / self._mTotalSeqs
+ / self._mModel['mTypicalPositiveRatio'])
+ r = r * self._mFreqChar / self._mTotalChar
+ if r >= 1.0:
+ r = 0.99
+ return r
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/sbcsgroupprober.py b/app/src/processing/app/i18n/python/requests/packages/charade/sbcsgroupprober.py
index b224814568f..1b6196cd16c 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/sbcsgroupprober.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/sbcsgroupprober.py
@@ -1,69 +1,69 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is Mozilla Universal charset detector code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 2001
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-# Shy Shalom - original C code
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-from .charsetgroupprober import CharSetGroupProber
-from .sbcharsetprober import SingleByteCharSetProber
-from .langcyrillicmodel import (Win1251CyrillicModel, Koi8rModel,
- Latin5CyrillicModel, MacCyrillicModel,
- Ibm866Model, Ibm855Model)
-from .langgreekmodel import Latin7GreekModel, Win1253GreekModel
-from .langbulgarianmodel import Latin5BulgarianModel, Win1251BulgarianModel
-from .langhungarianmodel import Latin2HungarianModel, Win1250HungarianModel
-from .langthaimodel import TIS620ThaiModel
-from .langhebrewmodel import Win1255HebrewModel
-from .hebrewprober import HebrewProber
-
-
-class SBCSGroupProber(CharSetGroupProber):
- def __init__(self):
- CharSetGroupProber.__init__(self)
- self._mProbers = [
- SingleByteCharSetProber(Win1251CyrillicModel),
- SingleByteCharSetProber(Koi8rModel),
- SingleByteCharSetProber(Latin5CyrillicModel),
- SingleByteCharSetProber(MacCyrillicModel),
- SingleByteCharSetProber(Ibm866Model),
- SingleByteCharSetProber(Ibm855Model),
- SingleByteCharSetProber(Latin7GreekModel),
- SingleByteCharSetProber(Win1253GreekModel),
- SingleByteCharSetProber(Latin5BulgarianModel),
- SingleByteCharSetProber(Win1251BulgarianModel),
- SingleByteCharSetProber(Latin2HungarianModel),
- SingleByteCharSetProber(Win1250HungarianModel),
- SingleByteCharSetProber(TIS620ThaiModel),
- ]
- hebrewProber = HebrewProber()
- logicalHebrewProber = SingleByteCharSetProber(Win1255HebrewModel,
- False, hebrewProber)
- visualHebrewProber = SingleByteCharSetProber(Win1255HebrewModel, True,
- hebrewProber)
- hebrewProber.set_model_probers(logicalHebrewProber, visualHebrewProber)
- self._mProbers.extend([hebrewProber, logicalHebrewProber,
- visualHebrewProber])
-
- self.reset()
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is Mozilla Universal charset detector code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 2001
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+# Shy Shalom - original C code
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+from .charsetgroupprober import CharSetGroupProber
+from .sbcharsetprober import SingleByteCharSetProber
+from .langcyrillicmodel import (Win1251CyrillicModel, Koi8rModel,
+ Latin5CyrillicModel, MacCyrillicModel,
+ Ibm866Model, Ibm855Model)
+from .langgreekmodel import Latin7GreekModel, Win1253GreekModel
+from .langbulgarianmodel import Latin5BulgarianModel, Win1251BulgarianModel
+from .langhungarianmodel import Latin2HungarianModel, Win1250HungarianModel
+from .langthaimodel import TIS620ThaiModel
+from .langhebrewmodel import Win1255HebrewModel
+from .hebrewprober import HebrewProber
+
+
+class SBCSGroupProber(CharSetGroupProber):
+ def __init__(self):
+ CharSetGroupProber.__init__(self)
+ self._mProbers = [
+ SingleByteCharSetProber(Win1251CyrillicModel),
+ SingleByteCharSetProber(Koi8rModel),
+ SingleByteCharSetProber(Latin5CyrillicModel),
+ SingleByteCharSetProber(MacCyrillicModel),
+ SingleByteCharSetProber(Ibm866Model),
+ SingleByteCharSetProber(Ibm855Model),
+ SingleByteCharSetProber(Latin7GreekModel),
+ SingleByteCharSetProber(Win1253GreekModel),
+ SingleByteCharSetProber(Latin5BulgarianModel),
+ SingleByteCharSetProber(Win1251BulgarianModel),
+ SingleByteCharSetProber(Latin2HungarianModel),
+ SingleByteCharSetProber(Win1250HungarianModel),
+ SingleByteCharSetProber(TIS620ThaiModel),
+ ]
+ hebrewProber = HebrewProber()
+ logicalHebrewProber = SingleByteCharSetProber(Win1255HebrewModel,
+ False, hebrewProber)
+ visualHebrewProber = SingleByteCharSetProber(Win1255HebrewModel, True,
+ hebrewProber)
+ hebrewProber.set_model_probers(logicalHebrewProber, visualHebrewProber)
+ self._mProbers.extend([hebrewProber, logicalHebrewProber,
+ visualHebrewProber])
+
+ self.reset()
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/sjisprober.py b/app/src/processing/app/i18n/python/requests/packages/charade/sjisprober.py
index 9bb0cdcf1fd..b173614e682 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/sjisprober.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/sjisprober.py
@@ -1,91 +1,91 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is mozilla.org code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 1998
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-import sys
-from .mbcharsetprober import MultiByteCharSetProber
-from .codingstatemachine import CodingStateMachine
-from .chardistribution import SJISDistributionAnalysis
-from .jpcntx import SJISContextAnalysis
-from .mbcssm import SJISSMModel
-from . import constants
-
-
-class SJISProber(MultiByteCharSetProber):
- def __init__(self):
- MultiByteCharSetProber.__init__(self)
- self._mCodingSM = CodingStateMachine(SJISSMModel)
- self._mDistributionAnalyzer = SJISDistributionAnalysis()
- self._mContextAnalyzer = SJISContextAnalysis()
- self.reset()
-
- def reset(self):
- MultiByteCharSetProber.reset(self)
- self._mContextAnalyzer.reset()
-
- def get_charset_name(self):
- return "SHIFT_JIS"
-
- def feed(self, aBuf):
- aLen = len(aBuf)
- for i in range(0, aLen):
- codingState = self._mCodingSM.next_state(aBuf[i])
- if codingState == constants.eError:
- if constants._debug:
- sys.stderr.write(self.get_charset_name()
- + ' prober hit error at byte ' + str(i)
- + '\n')
- self._mState = constants.eNotMe
- break
- elif codingState == constants.eItsMe:
- self._mState = constants.eFoundIt
- break
- elif codingState == constants.eStart:
- charLen = self._mCodingSM.get_current_charlen()
- if i == 0:
- self._mLastChar[1] = aBuf[0]
- self._mContextAnalyzer.feed(self._mLastChar[2 - charLen:],
- charLen)
- self._mDistributionAnalyzer.feed(self._mLastChar, charLen)
- else:
- self._mContextAnalyzer.feed(aBuf[i + 1 - charLen:i + 3
- - charLen], charLen)
- self._mDistributionAnalyzer.feed(aBuf[i - 1:i + 1],
- charLen)
-
- self._mLastChar[0] = aBuf[aLen - 1]
-
- if self.get_state() == constants.eDetecting:
- if (self._mContextAnalyzer.got_enough_data() and
- (self.get_confidence() > constants.SHORTCUT_THRESHOLD)):
- self._mState = constants.eFoundIt
-
- return self.get_state()
-
- def get_confidence(self):
- contxtCf = self._mContextAnalyzer.get_confidence()
- distribCf = self._mDistributionAnalyzer.get_confidence()
- return max(contxtCf, distribCf)
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is mozilla.org code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+import sys
+from .mbcharsetprober import MultiByteCharSetProber
+from .codingstatemachine import CodingStateMachine
+from .chardistribution import SJISDistributionAnalysis
+from .jpcntx import SJISContextAnalysis
+from .mbcssm import SJISSMModel
+from . import constants
+
+
+class SJISProber(MultiByteCharSetProber):
+ def __init__(self):
+ MultiByteCharSetProber.__init__(self)
+ self._mCodingSM = CodingStateMachine(SJISSMModel)
+ self._mDistributionAnalyzer = SJISDistributionAnalysis()
+ self._mContextAnalyzer = SJISContextAnalysis()
+ self.reset()
+
+ def reset(self):
+ MultiByteCharSetProber.reset(self)
+ self._mContextAnalyzer.reset()
+
+ def get_charset_name(self):
+ return "SHIFT_JIS"
+
+ def feed(self, aBuf):
+ aLen = len(aBuf)
+ for i in range(0, aLen):
+ codingState = self._mCodingSM.next_state(aBuf[i])
+ if codingState == constants.eError:
+ if constants._debug:
+ sys.stderr.write(self.get_charset_name()
+ + ' prober hit error at byte ' + str(i)
+ + '\n')
+ self._mState = constants.eNotMe
+ break
+ elif codingState == constants.eItsMe:
+ self._mState = constants.eFoundIt
+ break
+ elif codingState == constants.eStart:
+ charLen = self._mCodingSM.get_current_charlen()
+ if i == 0:
+ self._mLastChar[1] = aBuf[0]
+ self._mContextAnalyzer.feed(self._mLastChar[2 - charLen:],
+ charLen)
+ self._mDistributionAnalyzer.feed(self._mLastChar, charLen)
+ else:
+ self._mContextAnalyzer.feed(aBuf[i + 1 - charLen:i + 3
+ - charLen], charLen)
+ self._mDistributionAnalyzer.feed(aBuf[i - 1:i + 1],
+ charLen)
+
+ self._mLastChar[0] = aBuf[aLen - 1]
+
+ if self.get_state() == constants.eDetecting:
+ if (self._mContextAnalyzer.got_enough_data() and
+ (self.get_confidence() > constants.SHORTCUT_THRESHOLD)):
+ self._mState = constants.eFoundIt
+
+ return self.get_state()
+
+ def get_confidence(self):
+ contxtCf = self._mContextAnalyzer.get_confidence()
+ distribCf = self._mDistributionAnalyzer.get_confidence()
+ return max(contxtCf, distribCf)
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/universaldetector.py b/app/src/processing/app/i18n/python/requests/packages/charade/universaldetector.py
index adaae720704..3d5336b0324 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/universaldetector.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/universaldetector.py
@@ -1,171 +1,171 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is Mozilla Universal charset detector code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 2001
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-# Shy Shalom - original C code
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-from . import constants
-import sys
-from .latin1prober import Latin1Prober # windows-1252
-from .mbcsgroupprober import MBCSGroupProber # multi-byte character sets
-from .sbcsgroupprober import SBCSGroupProber # single-byte character sets
-from .escprober import EscCharSetProber # ISO-2122, etc.
-import re
-
-MINIMUM_THRESHOLD = 0.20
-ePureAscii = 0
-eEscAscii = 1
-eHighbyte = 2
-
-
-class UniversalDetector:
- def __init__(self):
- self._highBitDetector = re.compile(b'[\x80-\xFF]')
- self._escDetector = re.compile(b'(\033|~{)')
- self._mEscCharSetProber = None
- self._mCharSetProbers = []
- self.reset()
-
- def reset(self):
- self.result = {'encoding': None, 'confidence': 0.0}
- self.done = False
- self._mStart = True
- self._mGotData = False
- self._mInputState = ePureAscii
- self._mLastChar = b''
- if self._mEscCharSetProber:
- self._mEscCharSetProber.reset()
- for prober in self._mCharSetProbers:
- prober.reset()
-
- def feed(self, aBuf):
- if self.done:
- return
-
- aLen = len(aBuf)
- if not aLen:
- return
-
- if not self._mGotData:
- # If the data starts with BOM, we know it is UTF
- if aBuf[:3] == '\xEF\xBB\xBF':
- # EF BB BF UTF-8 with BOM
- self.result = {'encoding': "UTF-8", 'confidence': 1.0}
- elif aBuf[:4] == '\xFF\xFE\x00\x00':
- # FF FE 00 00 UTF-32, little-endian BOM
- self.result = {'encoding': "UTF-32LE", 'confidence': 1.0}
- elif aBuf[:4] == '\x00\x00\xFE\xFF':
- # 00 00 FE FF UTF-32, big-endian BOM
- self.result = {'encoding': "UTF-32BE", 'confidence': 1.0}
- elif aBuf[:4] == '\xFE\xFF\x00\x00':
- # FE FF 00 00 UCS-4, unusual octet order BOM (3412)
- self.result = {
- 'encoding': "X-ISO-10646-UCS-4-3412",
- 'confidence': 1.0
- }
- elif aBuf[:4] == '\x00\x00\xFF\xFE':
- # 00 00 FF FE UCS-4, unusual octet order BOM (2143)
- self.result = {
- 'encoding': "X-ISO-10646-UCS-4-2143",
- 'confidence': 1.0
- }
- elif aBuf[:2] == '\xFF\xFE':
- # FF FE UTF-16, little endian BOM
- self.result = {'encoding': "UTF-16LE", 'confidence': 1.0}
- elif aBuf[:2] == '\xFE\xFF':
- # FE FF UTF-16, big endian BOM
- self.result = {'encoding': "UTF-16BE", 'confidence': 1.0}
-
- self._mGotData = True
- if self.result['encoding'] and (self.result['confidence'] > 0.0):
- self.done = True
- return
-
- if self._mInputState == ePureAscii:
- if self._highBitDetector.search(aBuf):
- self._mInputState = eHighbyte
- elif ((self._mInputState == ePureAscii) and
- self._escDetector.search(self._mLastChar + aBuf)):
- self._mInputState = eEscAscii
-
- self._mLastChar = aBuf[-1:]
-
- if self._mInputState == eEscAscii:
- if not self._mEscCharSetProber:
- self._mEscCharSetProber = EscCharSetProber()
- if self._mEscCharSetProber.feed(aBuf) == constants.eFoundIt:
- self.result = {
- 'encoding': self._mEscCharSetProber.get_charset_name(),
- 'confidence': self._mEscCharSetProber.get_confidence()
- }
- self.done = True
- elif self._mInputState == eHighbyte:
- if not self._mCharSetProbers:
- self._mCharSetProbers = [MBCSGroupProber(), SBCSGroupProber(),
- Latin1Prober()]
- for prober in self._mCharSetProbers:
- if prober.feed(aBuf) == constants.eFoundIt:
- self.result = {'encoding': prober.get_charset_name(),
- 'confidence': prober.get_confidence()}
- self.done = True
- break
-
- def close(self):
- if self.done:
- return
- if not self._mGotData:
- if constants._debug:
- sys.stderr.write('no data received!\n')
- return
- self.done = True
-
- if self._mInputState == ePureAscii:
- self.result = {'encoding': 'ascii', 'confidence': 1.0}
- return self.result
-
- if self._mInputState == eHighbyte:
- proberConfidence = None
- maxProberConfidence = 0.0
- maxProber = None
- for prober in self._mCharSetProbers:
- if not prober:
- continue
- proberConfidence = prober.get_confidence()
- if proberConfidence > maxProberConfidence:
- maxProberConfidence = proberConfidence
- maxProber = prober
- if maxProber and (maxProberConfidence > MINIMUM_THRESHOLD):
- self.result = {'encoding': maxProber.get_charset_name(),
- 'confidence': maxProber.get_confidence()}
- return self.result
-
- if constants._debug:
- sys.stderr.write('no probers hit minimum threshhold\n')
- for prober in self._mCharSetProbers[0].mProbers:
- if not prober:
- continue
- sys.stderr.write('%s confidence = %s\n' %
- (prober.get_charset_name(),
- prober.get_confidence()))
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is Mozilla Universal charset detector code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 2001
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+# Shy Shalom - original C code
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+from . import constants
+import sys
+from .latin1prober import Latin1Prober # windows-1252
+from .mbcsgroupprober import MBCSGroupProber # multi-byte character sets
+from .sbcsgroupprober import SBCSGroupProber # single-byte character sets
+from .escprober import EscCharSetProber # ISO-2122, etc.
+import re
+
+MINIMUM_THRESHOLD = 0.20
+ePureAscii = 0
+eEscAscii = 1
+eHighbyte = 2
+
+
+class UniversalDetector:
+ def __init__(self):
+ self._highBitDetector = re.compile(b'[\x80-\xFF]')
+ self._escDetector = re.compile(b'(\033|~{)')
+ self._mEscCharSetProber = None
+ self._mCharSetProbers = []
+ self.reset()
+
+ def reset(self):
+ self.result = {'encoding': None, 'confidence': 0.0}
+ self.done = False
+ self._mStart = True
+ self._mGotData = False
+ self._mInputState = ePureAscii
+ self._mLastChar = b''
+ if self._mEscCharSetProber:
+ self._mEscCharSetProber.reset()
+ for prober in self._mCharSetProbers:
+ prober.reset()
+
+ def feed(self, aBuf):
+ if self.done:
+ return
+
+ aLen = len(aBuf)
+ if not aLen:
+ return
+
+ if not self._mGotData:
+ # If the data starts with BOM, we know it is UTF
+ if aBuf[:3] == '\xEF\xBB\xBF':
+ # EF BB BF UTF-8 with BOM
+ self.result = {'encoding': "UTF-8", 'confidence': 1.0}
+ elif aBuf[:4] == '\xFF\xFE\x00\x00':
+ # FF FE 00 00 UTF-32, little-endian BOM
+ self.result = {'encoding': "UTF-32LE", 'confidence': 1.0}
+ elif aBuf[:4] == '\x00\x00\xFE\xFF':
+ # 00 00 FE FF UTF-32, big-endian BOM
+ self.result = {'encoding': "UTF-32BE", 'confidence': 1.0}
+ elif aBuf[:4] == '\xFE\xFF\x00\x00':
+ # FE FF 00 00 UCS-4, unusual octet order BOM (3412)
+ self.result = {
+ 'encoding': "X-ISO-10646-UCS-4-3412",
+ 'confidence': 1.0
+ }
+ elif aBuf[:4] == '\x00\x00\xFF\xFE':
+ # 00 00 FF FE UCS-4, unusual octet order BOM (2143)
+ self.result = {
+ 'encoding': "X-ISO-10646-UCS-4-2143",
+ 'confidence': 1.0
+ }
+ elif aBuf[:2] == '\xFF\xFE':
+ # FF FE UTF-16, little endian BOM
+ self.result = {'encoding': "UTF-16LE", 'confidence': 1.0}
+ elif aBuf[:2] == '\xFE\xFF':
+ # FE FF UTF-16, big endian BOM
+ self.result = {'encoding': "UTF-16BE", 'confidence': 1.0}
+
+ self._mGotData = True
+ if self.result['encoding'] and (self.result['confidence'] > 0.0):
+ self.done = True
+ return
+
+ if self._mInputState == ePureAscii:
+ if self._highBitDetector.search(aBuf):
+ self._mInputState = eHighbyte
+ elif ((self._mInputState == ePureAscii) and
+ self._escDetector.search(self._mLastChar + aBuf)):
+ self._mInputState = eEscAscii
+
+ self._mLastChar = aBuf[-1:]
+
+ if self._mInputState == eEscAscii:
+ if not self._mEscCharSetProber:
+ self._mEscCharSetProber = EscCharSetProber()
+ if self._mEscCharSetProber.feed(aBuf) == constants.eFoundIt:
+ self.result = {
+ 'encoding': self._mEscCharSetProber.get_charset_name(),
+ 'confidence': self._mEscCharSetProber.get_confidence()
+ }
+ self.done = True
+ elif self._mInputState == eHighbyte:
+ if not self._mCharSetProbers:
+ self._mCharSetProbers = [MBCSGroupProber(), SBCSGroupProber(),
+ Latin1Prober()]
+ for prober in self._mCharSetProbers:
+ if prober.feed(aBuf) == constants.eFoundIt:
+ self.result = {'encoding': prober.get_charset_name(),
+ 'confidence': prober.get_confidence()}
+ self.done = True
+ break
+
+ def close(self):
+ if self.done:
+ return
+ if not self._mGotData:
+ if constants._debug:
+ sys.stderr.write('no data received!\n')
+ return
+ self.done = True
+
+ if self._mInputState == ePureAscii:
+ self.result = {'encoding': 'ascii', 'confidence': 1.0}
+ return self.result
+
+ if self._mInputState == eHighbyte:
+ proberConfidence = None
+ maxProberConfidence = 0.0
+ maxProber = None
+ for prober in self._mCharSetProbers:
+ if not prober:
+ continue
+ proberConfidence = prober.get_confidence()
+ if proberConfidence > maxProberConfidence:
+ maxProberConfidence = proberConfidence
+ maxProber = prober
+ if maxProber and (maxProberConfidence > MINIMUM_THRESHOLD):
+ self.result = {'encoding': maxProber.get_charset_name(),
+ 'confidence': maxProber.get_confidence()}
+ return self.result
+
+ if constants._debug:
+ sys.stderr.write('no probers hit minimum threshhold\n')
+ for prober in self._mCharSetProbers[0].mProbers:
+ if not prober:
+ continue
+ sys.stderr.write('%s confidence = %s\n' %
+ (prober.get_charset_name(),
+ prober.get_confidence()))
diff --git a/app/src/processing/app/i18n/python/requests/packages/charade/utf8prober.py b/app/src/processing/app/i18n/python/requests/packages/charade/utf8prober.py
index 72c8d3d6a9b..1c0bb5d8fda 100644
--- a/app/src/processing/app/i18n/python/requests/packages/charade/utf8prober.py
+++ b/app/src/processing/app/i18n/python/requests/packages/charade/utf8prober.py
@@ -1,76 +1,76 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is mozilla.org code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 1998
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-# Mark Pilgrim - port to Python
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA
-######################### END LICENSE BLOCK #########################
-
-from . import constants
-from .charsetprober import CharSetProber
-from .codingstatemachine import CodingStateMachine
-from .mbcssm import UTF8SMModel
-
-ONE_CHAR_PROB = 0.5
-
-
-class UTF8Prober(CharSetProber):
- def __init__(self):
- CharSetProber.__init__(self)
- self._mCodingSM = CodingStateMachine(UTF8SMModel)
- self.reset()
-
- def reset(self):
- CharSetProber.reset(self)
- self._mCodingSM.reset()
- self._mNumOfMBChar = 0
-
- def get_charset_name(self):
- return "utf-8"
-
- def feed(self, aBuf):
- for c in aBuf:
- codingState = self._mCodingSM.next_state(c)
- if codingState == constants.eError:
- self._mState = constants.eNotMe
- break
- elif codingState == constants.eItsMe:
- self._mState = constants.eFoundIt
- break
- elif codingState == constants.eStart:
- if self._mCodingSM.get_current_charlen() >= 2:
- self._mNumOfMBChar += 1
-
- if self.get_state() == constants.eDetecting:
- if self.get_confidence() > constants.SHORTCUT_THRESHOLD:
- self._mState = constants.eFoundIt
-
- return self.get_state()
-
- def get_confidence(self):
- unlike = 0.99
- if self._mNumOfMBChar < 6:
- for i in range(0, self._mNumOfMBChar):
- unlike = unlike * ONE_CHAR_PROB
- return 1.0 - unlike
- else:
- return unlike
+######################## BEGIN LICENSE BLOCK ########################
+# The Original Code is mozilla.org code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mark Pilgrim - port to Python
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+######################### END LICENSE BLOCK #########################
+
+from . import constants
+from .charsetprober import CharSetProber
+from .codingstatemachine import CodingStateMachine
+from .mbcssm import UTF8SMModel
+
+ONE_CHAR_PROB = 0.5
+
+
+class UTF8Prober(CharSetProber):
+ def __init__(self):
+ CharSetProber.__init__(self)
+ self._mCodingSM = CodingStateMachine(UTF8SMModel)
+ self.reset()
+
+ def reset(self):
+ CharSetProber.reset(self)
+ self._mCodingSM.reset()
+ self._mNumOfMBChar = 0
+
+ def get_charset_name(self):
+ return "utf-8"
+
+ def feed(self, aBuf):
+ for c in aBuf:
+ codingState = self._mCodingSM.next_state(c)
+ if codingState == constants.eError:
+ self._mState = constants.eNotMe
+ break
+ elif codingState == constants.eItsMe:
+ self._mState = constants.eFoundIt
+ break
+ elif codingState == constants.eStart:
+ if self._mCodingSM.get_current_charlen() >= 2:
+ self._mNumOfMBChar += 1
+
+ if self.get_state() == constants.eDetecting:
+ if self.get_confidence() > constants.SHORTCUT_THRESHOLD:
+ self._mState = constants.eFoundIt
+
+ return self.get_state()
+
+ def get_confidence(self):
+ unlike = 0.99
+ if self._mNumOfMBChar < 6:
+ for i in range(0, self._mNumOfMBChar):
+ unlike = unlike * ONE_CHAR_PROB
+ return 1.0 - unlike
+ else:
+ return unlike
diff --git a/app/src/processing/app/windows/Advapi32.java b/app/src/processing/app/windows/Advapi32.java
index 0534d6b2175..203fb74d7ed 100644
--- a/app/src/processing/app/windows/Advapi32.java
+++ b/app/src/processing/app/windows/Advapi32.java
@@ -1,335 +1,335 @@
-package processing.app.windows;
-
-/*
- * Advapi32.java
- *
- * Created on 6. August 2007, 11:24
- *
- * To change this template, choose Tools | Template Manager
- * and open the template in the editor.
- */
-
-import com.sun.jna.*;
-import com.sun.jna.ptr.*;
-import com.sun.jna.win32.*;
-
-/**
- *
- * @author TB
- */
-public interface Advapi32 extends StdCallLibrary {
- Advapi32 INSTANCE = (Advapi32) Native.loadLibrary("Advapi32", Advapi32.class, Options.UNICODE_OPTIONS);
-
-/*
-BOOL WINAPI LookupAccountName(
- LPCTSTR lpSystemName,
- LPCTSTR lpAccountName,
- PSID Sid,
- LPDWORD cbSid,
- LPTSTR ReferencedDomainName,
- LPDWORD cchReferencedDomainName,
- PSID_NAME_USE peUse
-);*/
- public boolean LookupAccountName(String lpSystemName, String lpAccountName,
- byte[] Sid, IntByReference cbSid, char[] ReferencedDomainName,
- IntByReference cchReferencedDomainName, PointerByReference peUse);
-
-/*
-BOOL WINAPI LookupAccountSid(
- LPCTSTR lpSystemName,
- PSID lpSid,
- LPTSTR lpName,
- LPDWORD cchName,
- LPTSTR lpReferencedDomainName,
- LPDWORD cchReferencedDomainName,
- PSID_NAME_USE peUse
-);*/
- public boolean LookupAccountSid(String lpSystemName, byte[] Sid,
- char[] lpName, IntByReference cchName, char[] ReferencedDomainName,
- IntByReference cchReferencedDomainName, PointerByReference peUse);
-
-/*
-BOOL ConvertSidToStringSid(
- PSID Sid,
- LPTSTR* StringSid
-);*/
- public boolean ConvertSidToStringSid(byte[] Sid, PointerByReference StringSid);
-
-/*
-BOOL WINAPI ConvertStringSidToSid(
- LPCTSTR StringSid,
- PSID* Sid
-);*/
- public boolean ConvertStringSidToSid(String StringSid, PointerByReference Sid);
-
-/*
-SC_HANDLE WINAPI OpenSCManager(
- LPCTSTR lpMachineName,
- LPCTSTR lpDatabaseName,
- DWORD dwDesiredAccess
-);*/
- public Pointer OpenSCManager(String lpMachineName, WString lpDatabaseName, int dwDesiredAccess);
-
-/*
-BOOL WINAPI CloseServiceHandle(
- SC_HANDLE hSCObject
-);*/
- public boolean CloseServiceHandle(Pointer hSCObject);
-
-/*
-SC_HANDLE WINAPI OpenService(
- SC_HANDLE hSCManager,
- LPCTSTR lpServiceName,
- DWORD dwDesiredAccess
-);*/
- public Pointer OpenService(Pointer hSCManager, String lpServiceName, int dwDesiredAccess);
-
-/*
-BOOL WINAPI StartService(
- SC_HANDLE hService,
- DWORD dwNumServiceArgs,
- LPCTSTR* lpServiceArgVectors
-);*/
- public boolean StartService(Pointer hService, int dwNumServiceArgs, char[] lpServiceArgVectors);
-
-/*
-BOOL WINAPI ControlService(
- SC_HANDLE hService,
- DWORD dwControl,
- LPSERVICE_STATUS lpServiceStatus
-);*/
- public boolean ControlService(Pointer hService, int dwControl, SERVICE_STATUS lpServiceStatus);
-
-/*
-BOOL WINAPI StartServiceCtrlDispatcher(
- const SERVICE_TABLE_ENTRY* lpServiceTable
-);*/
- public boolean StartServiceCtrlDispatcher(Structure[] lpServiceTable);
-
-/*
-SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandler(
- LPCTSTR lpServiceName,
- LPHANDLER_FUNCTION lpHandlerProc
-);*/
- public Pointer RegisterServiceCtrlHandler(String lpServiceName, Handler lpHandlerProc);
-
-/*
-SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerEx(
- LPCTSTR lpServiceName,
- LPHANDLER_FUNCTION_EX lpHandlerProc,
- LPVOID lpContext
-);*/
- public Pointer RegisterServiceCtrlHandlerEx(String lpServiceName, HandlerEx lpHandlerProc, Pointer lpContext);
-
-/*
-BOOL WINAPI SetServiceStatus(
- SERVICE_STATUS_HANDLE hServiceStatus,
- LPSERVICE_STATUS lpServiceStatus
-);*/
- public boolean SetServiceStatus(Pointer hServiceStatus, SERVICE_STATUS lpServiceStatus);
-
-/*
-SC_HANDLE WINAPI CreateService(
- SC_HANDLE hSCManager,
- LPCTSTR lpServiceName,
- LPCTSTR lpDisplayName,
- DWORD dwDesiredAccess,
- DWORD dwServiceType,
- DWORD dwStartType,
- DWORD dwErrorControl,
- LPCTSTR lpBinaryPathName,
- LPCTSTR lpLoadOrderGroup,
- LPDWORD lpdwTagId,
- LPCTSTR lpDependencies,
- LPCTSTR lpServiceStartName,
- LPCTSTR lpPassword
-);*/
- public Pointer CreateService(Pointer hSCManager, String lpServiceName, String lpDisplayName,
- int dwDesiredAccess, int dwServiceType, int dwStartType, int dwErrorControl,
- String lpBinaryPathName, String lpLoadOrderGroup, IntByReference lpdwTagId,
- String lpDependencies, String lpServiceStartName, String lpPassword);
-
-/*
-BOOL WINAPI DeleteService(
- SC_HANDLE hService
-);*/
- public boolean DeleteService(Pointer hService);
-
-/*
-BOOL WINAPI ChangeServiceConfig2(
- SC_HANDLE hService,
- DWORD dwInfoLevel,
- LPVOID lpInfo
-);*/
- public boolean ChangeServiceConfig2(Pointer hService, int dwInfoLevel, ChangeServiceConfig2Info lpInfo);
-
-/*
-LONG WINAPI RegOpenKeyEx(
- HKEY hKey,
- LPCTSTR lpSubKey,
- DWORD ulOptions,
- REGSAM samDesired,
- PHKEY phkResult
-);*/
- public int RegOpenKeyEx(int hKey, String lpSubKey, int ulOptions, int samDesired, IntByReference phkResult);
-
-/*
-LONG WINAPI RegQueryValueEx(
- HKEY hKey,
- LPCTSTR lpValueName,
- LPDWORD lpReserved,
- LPDWORD lpType,
- LPBYTE lpData,
- LPDWORD lpcbData
-);*/
- public int RegQueryValueEx(int hKey, String lpValueName, IntByReference lpReserved, IntByReference lpType, byte[] lpData, IntByReference lpcbData);
-
-/*
-LONG WINAPI RegCloseKey(
- HKEY hKey
-);*/
- public int RegCloseKey(int hKey);
-
-/*
-LONG WINAPI RegDeleteValue(
- HKEY hKey,
- LPCTSTR lpValueName
-);*/
- public int RegDeleteValue(int hKey, String lpValueName);
-
-/*
-LONG WINAPI RegSetValueEx(
- HKEY hKey,
- LPCTSTR lpValueName,
- DWORD Reserved,
- DWORD dwType,
- const BYTE* lpData,
- DWORD cbData
-);*/
- public int RegSetValueEx(int hKey, String lpValueName, int Reserved, int dwType, byte[] lpData, int cbData);
-
-/*
-LONG WINAPI RegCreateKeyEx(
- HKEY hKey,
- LPCTSTR lpSubKey,
- DWORD Reserved,
- LPTSTR lpClass,
- DWORD dwOptions,
- REGSAM samDesired,
- LPSECURITY_ATTRIBUTES lpSecurityAttributes,
- PHKEY phkResult,
- LPDWORD lpdwDisposition
-);*/
- public int RegCreateKeyEx(int hKey, String lpSubKey, int Reserved, String lpClass, int dwOptions,
- int samDesired, WINBASE.SECURITY_ATTRIBUTES lpSecurityAttributes, IntByReference phkResult,
- IntByReference lpdwDisposition);
-
-/*
-LONG WINAPI RegDeleteKey(
- HKEY hKey,
- LPCTSTR lpSubKey
-);*/
- public int RegDeleteKey(int hKey, String name);
-
-/*
-LONG WINAPI RegEnumKeyEx(
- HKEY hKey,
- DWORD dwIndex,
- LPTSTR lpName,
- LPDWORD lpcName,
- LPDWORD lpReserved,
- LPTSTR lpClass,
- LPDWORD lpcClass,
- PFILETIME lpftLastWriteTime
-);*/
- public int RegEnumKeyEx(int hKey, int dwIndex, char[] lpName, IntByReference lpcName, IntByReference reserved,
- char[] lpClass, IntByReference lpcClass, WINBASE.FILETIME lpftLastWriteTime);
-
-/*
-LONG WINAPI RegEnumValue(
- HKEY hKey,
- DWORD dwIndex,
- LPTSTR lpValueName,
- LPDWORD lpcchValueName,
- LPDWORD lpReserved,
- LPDWORD lpType,
- LPBYTE lpData,
- LPDWORD lpcbData
-);*/
- public int RegEnumValue(int hKey, int dwIndex, char[] lpValueName, IntByReference lpcchValueName, IntByReference reserved,
- IntByReference lpType, byte[] lpData, IntByReference lpcbData);
-
- interface SERVICE_MAIN_FUNCTION extends StdCallCallback {
- /*
- VOID WINAPI ServiceMain(
- DWORD dwArgc,
- LPTSTR* lpszArgv
- );*/
- public void callback(int dwArgc, Pointer lpszArgv);
- }
-
- interface Handler extends StdCallCallback {
- /*
- VOID WINAPI Handler(
- DWORD fdwControl
- );*/
- public void callback(int fdwControl);
- }
-
- interface HandlerEx extends StdCallCallback {
- /*
- DWORD WINAPI HandlerEx(
- DWORD dwControl,
- DWORD dwEventType,
- LPVOID lpEventData,
- LPVOID lpContext
- );*/
- public void callback(int dwControl, int dwEventType, Pointer lpEventData, Pointer lpContext);
- }
-
-/*
-typedef struct _SERVICE_STATUS {
- DWORD dwServiceType;
- DWORD dwCurrentState;
- DWORD dwControlsAccepted;
- DWORD dwWin32ExitCode;
- DWORD dwServiceSpecificExitCode;
- DWORD dwCheckPoint;
- DWORD dwWaitHint;
-} SERVICE_STATUS,
- *LPSERVICE_STATUS;*/
- public static class SERVICE_STATUS extends Structure {
- public int dwServiceType;
- public int dwCurrentState;
- public int dwControlsAccepted;
- public int dwWin32ExitCode;
- public int dwServiceSpecificExitCode;
- public int dwCheckPoint;
- public int dwWaitHint;
- }
-
-/*
-typedef struct _SERVICE_TABLE_ENTRY {
- LPTSTR lpServiceName;
- LPSERVICE_MAIN_FUNCTION lpServiceProc;
-} SERVICE_TABLE_ENTRY,
- *LPSERVICE_TABLE_ENTRY;*/
- public static class SERVICE_TABLE_ENTRY extends Structure {
- public String lpServiceName;
- public SERVICE_MAIN_FUNCTION lpServiceProc;
- }
-
- public static class ChangeServiceConfig2Info extends Structure {
- }
-
-/*
- typedef struct _SERVICE_DESCRIPTION {
- LPTSTR lpDescription;
-} SERVICE_DESCRIPTION,
- *LPSERVICE_DESCRIPTION;*/
- public static class SERVICE_DESCRIPTION extends ChangeServiceConfig2Info {
- public String lpDescription;
- }
-}
-
-
+package processing.app.windows;
+
+/*
+ * Advapi32.java
+ *
+ * Created on 6. August 2007, 11:24
+ *
+ * To change this template, choose Tools | Template Manager
+ * and open the template in the editor.
+ */
+
+import com.sun.jna.*;
+import com.sun.jna.ptr.*;
+import com.sun.jna.win32.*;
+
+/**
+ *
+ * @author TB
+ */
+public interface Advapi32 extends StdCallLibrary {
+ Advapi32 INSTANCE = (Advapi32) Native.loadLibrary("Advapi32", Advapi32.class, Options.UNICODE_OPTIONS);
+
+/*
+BOOL WINAPI LookupAccountName(
+ LPCTSTR lpSystemName,
+ LPCTSTR lpAccountName,
+ PSID Sid,
+ LPDWORD cbSid,
+ LPTSTR ReferencedDomainName,
+ LPDWORD cchReferencedDomainName,
+ PSID_NAME_USE peUse
+);*/
+ public boolean LookupAccountName(String lpSystemName, String lpAccountName,
+ byte[] Sid, IntByReference cbSid, char[] ReferencedDomainName,
+ IntByReference cchReferencedDomainName, PointerByReference peUse);
+
+/*
+BOOL WINAPI LookupAccountSid(
+ LPCTSTR lpSystemName,
+ PSID lpSid,
+ LPTSTR lpName,
+ LPDWORD cchName,
+ LPTSTR lpReferencedDomainName,
+ LPDWORD cchReferencedDomainName,
+ PSID_NAME_USE peUse
+);*/
+ public boolean LookupAccountSid(String lpSystemName, byte[] Sid,
+ char[] lpName, IntByReference cchName, char[] ReferencedDomainName,
+ IntByReference cchReferencedDomainName, PointerByReference peUse);
+
+/*
+BOOL ConvertSidToStringSid(
+ PSID Sid,
+ LPTSTR* StringSid
+);*/
+ public boolean ConvertSidToStringSid(byte[] Sid, PointerByReference StringSid);
+
+/*
+BOOL WINAPI ConvertStringSidToSid(
+ LPCTSTR StringSid,
+ PSID* Sid
+);*/
+ public boolean ConvertStringSidToSid(String StringSid, PointerByReference Sid);
+
+/*
+SC_HANDLE WINAPI OpenSCManager(
+ LPCTSTR lpMachineName,
+ LPCTSTR lpDatabaseName,
+ DWORD dwDesiredAccess
+);*/
+ public Pointer OpenSCManager(String lpMachineName, WString lpDatabaseName, int dwDesiredAccess);
+
+/*
+BOOL WINAPI CloseServiceHandle(
+ SC_HANDLE hSCObject
+);*/
+ public boolean CloseServiceHandle(Pointer hSCObject);
+
+/*
+SC_HANDLE WINAPI OpenService(
+ SC_HANDLE hSCManager,
+ LPCTSTR lpServiceName,
+ DWORD dwDesiredAccess
+);*/
+ public Pointer OpenService(Pointer hSCManager, String lpServiceName, int dwDesiredAccess);
+
+/*
+BOOL WINAPI StartService(
+ SC_HANDLE hService,
+ DWORD dwNumServiceArgs,
+ LPCTSTR* lpServiceArgVectors
+);*/
+ public boolean StartService(Pointer hService, int dwNumServiceArgs, char[] lpServiceArgVectors);
+
+/*
+BOOL WINAPI ControlService(
+ SC_HANDLE hService,
+ DWORD dwControl,
+ LPSERVICE_STATUS lpServiceStatus
+);*/
+ public boolean ControlService(Pointer hService, int dwControl, SERVICE_STATUS lpServiceStatus);
+
+/*
+BOOL WINAPI StartServiceCtrlDispatcher(
+ const SERVICE_TABLE_ENTRY* lpServiceTable
+);*/
+ public boolean StartServiceCtrlDispatcher(Structure[] lpServiceTable);
+
+/*
+SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandler(
+ LPCTSTR lpServiceName,
+ LPHANDLER_FUNCTION lpHandlerProc
+);*/
+ public Pointer RegisterServiceCtrlHandler(String lpServiceName, Handler lpHandlerProc);
+
+/*
+SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerEx(
+ LPCTSTR lpServiceName,
+ LPHANDLER_FUNCTION_EX lpHandlerProc,
+ LPVOID lpContext
+);*/
+ public Pointer RegisterServiceCtrlHandlerEx(String lpServiceName, HandlerEx lpHandlerProc, Pointer lpContext);
+
+/*
+BOOL WINAPI SetServiceStatus(
+ SERVICE_STATUS_HANDLE hServiceStatus,
+ LPSERVICE_STATUS lpServiceStatus
+);*/
+ public boolean SetServiceStatus(Pointer hServiceStatus, SERVICE_STATUS lpServiceStatus);
+
+/*
+SC_HANDLE WINAPI CreateService(
+ SC_HANDLE hSCManager,
+ LPCTSTR lpServiceName,
+ LPCTSTR lpDisplayName,
+ DWORD dwDesiredAccess,
+ DWORD dwServiceType,
+ DWORD dwStartType,
+ DWORD dwErrorControl,
+ LPCTSTR lpBinaryPathName,
+ LPCTSTR lpLoadOrderGroup,
+ LPDWORD lpdwTagId,
+ LPCTSTR lpDependencies,
+ LPCTSTR lpServiceStartName,
+ LPCTSTR lpPassword
+);*/
+ public Pointer CreateService(Pointer hSCManager, String lpServiceName, String lpDisplayName,
+ int dwDesiredAccess, int dwServiceType, int dwStartType, int dwErrorControl,
+ String lpBinaryPathName, String lpLoadOrderGroup, IntByReference lpdwTagId,
+ String lpDependencies, String lpServiceStartName, String lpPassword);
+
+/*
+BOOL WINAPI DeleteService(
+ SC_HANDLE hService
+);*/
+ public boolean DeleteService(Pointer hService);
+
+/*
+BOOL WINAPI ChangeServiceConfig2(
+ SC_HANDLE hService,
+ DWORD dwInfoLevel,
+ LPVOID lpInfo
+);*/
+ public boolean ChangeServiceConfig2(Pointer hService, int dwInfoLevel, ChangeServiceConfig2Info lpInfo);
+
+/*
+LONG WINAPI RegOpenKeyEx(
+ HKEY hKey,
+ LPCTSTR lpSubKey,
+ DWORD ulOptions,
+ REGSAM samDesired,
+ PHKEY phkResult
+);*/
+ public int RegOpenKeyEx(int hKey, String lpSubKey, int ulOptions, int samDesired, IntByReference phkResult);
+
+/*
+LONG WINAPI RegQueryValueEx(
+ HKEY hKey,
+ LPCTSTR lpValueName,
+ LPDWORD lpReserved,
+ LPDWORD lpType,
+ LPBYTE lpData,
+ LPDWORD lpcbData
+);*/
+ public int RegQueryValueEx(int hKey, String lpValueName, IntByReference lpReserved, IntByReference lpType, byte[] lpData, IntByReference lpcbData);
+
+/*
+LONG WINAPI RegCloseKey(
+ HKEY hKey
+);*/
+ public int RegCloseKey(int hKey);
+
+/*
+LONG WINAPI RegDeleteValue(
+ HKEY hKey,
+ LPCTSTR lpValueName
+);*/
+ public int RegDeleteValue(int hKey, String lpValueName);
+
+/*
+LONG WINAPI RegSetValueEx(
+ HKEY hKey,
+ LPCTSTR lpValueName,
+ DWORD Reserved,
+ DWORD dwType,
+ const BYTE* lpData,
+ DWORD cbData
+);*/
+ public int RegSetValueEx(int hKey, String lpValueName, int Reserved, int dwType, byte[] lpData, int cbData);
+
+/*
+LONG WINAPI RegCreateKeyEx(
+ HKEY hKey,
+ LPCTSTR lpSubKey,
+ DWORD Reserved,
+ LPTSTR lpClass,
+ DWORD dwOptions,
+ REGSAM samDesired,
+ LPSECURITY_ATTRIBUTES lpSecurityAttributes,
+ PHKEY phkResult,
+ LPDWORD lpdwDisposition
+);*/
+ public int RegCreateKeyEx(int hKey, String lpSubKey, int Reserved, String lpClass, int dwOptions,
+ int samDesired, WINBASE.SECURITY_ATTRIBUTES lpSecurityAttributes, IntByReference phkResult,
+ IntByReference lpdwDisposition);
+
+/*
+LONG WINAPI RegDeleteKey(
+ HKEY hKey,
+ LPCTSTR lpSubKey
+);*/
+ public int RegDeleteKey(int hKey, String name);
+
+/*
+LONG WINAPI RegEnumKeyEx(
+ HKEY hKey,
+ DWORD dwIndex,
+ LPTSTR lpName,
+ LPDWORD lpcName,
+ LPDWORD lpReserved,
+ LPTSTR lpClass,
+ LPDWORD lpcClass,
+ PFILETIME lpftLastWriteTime
+);*/
+ public int RegEnumKeyEx(int hKey, int dwIndex, char[] lpName, IntByReference lpcName, IntByReference reserved,
+ char[] lpClass, IntByReference lpcClass, WINBASE.FILETIME lpftLastWriteTime);
+
+/*
+LONG WINAPI RegEnumValue(
+ HKEY hKey,
+ DWORD dwIndex,
+ LPTSTR lpValueName,
+ LPDWORD lpcchValueName,
+ LPDWORD lpReserved,
+ LPDWORD lpType,
+ LPBYTE lpData,
+ LPDWORD lpcbData
+);*/
+ public int RegEnumValue(int hKey, int dwIndex, char[] lpValueName, IntByReference lpcchValueName, IntByReference reserved,
+ IntByReference lpType, byte[] lpData, IntByReference lpcbData);
+
+ interface SERVICE_MAIN_FUNCTION extends StdCallCallback {
+ /*
+ VOID WINAPI ServiceMain(
+ DWORD dwArgc,
+ LPTSTR* lpszArgv
+ );*/
+ public void callback(int dwArgc, Pointer lpszArgv);
+ }
+
+ interface Handler extends StdCallCallback {
+ /*
+ VOID WINAPI Handler(
+ DWORD fdwControl
+ );*/
+ public void callback(int fdwControl);
+ }
+
+ interface HandlerEx extends StdCallCallback {
+ /*
+ DWORD WINAPI HandlerEx(
+ DWORD dwControl,
+ DWORD dwEventType,
+ LPVOID lpEventData,
+ LPVOID lpContext
+ );*/
+ public void callback(int dwControl, int dwEventType, Pointer lpEventData, Pointer lpContext);
+ }
+
+/*
+typedef struct _SERVICE_STATUS {
+ DWORD dwServiceType;
+ DWORD dwCurrentState;
+ DWORD dwControlsAccepted;
+ DWORD dwWin32ExitCode;
+ DWORD dwServiceSpecificExitCode;
+ DWORD dwCheckPoint;
+ DWORD dwWaitHint;
+} SERVICE_STATUS,
+ *LPSERVICE_STATUS;*/
+ public static class SERVICE_STATUS extends Structure {
+ public int dwServiceType;
+ public int dwCurrentState;
+ public int dwControlsAccepted;
+ public int dwWin32ExitCode;
+ public int dwServiceSpecificExitCode;
+ public int dwCheckPoint;
+ public int dwWaitHint;
+ }
+
+/*
+typedef struct _SERVICE_TABLE_ENTRY {
+ LPTSTR lpServiceName;
+ LPSERVICE_MAIN_FUNCTION lpServiceProc;
+} SERVICE_TABLE_ENTRY,
+ *LPSERVICE_TABLE_ENTRY;*/
+ public static class SERVICE_TABLE_ENTRY extends Structure {
+ public String lpServiceName;
+ public SERVICE_MAIN_FUNCTION lpServiceProc;
+ }
+
+ public static class ChangeServiceConfig2Info extends Structure {
+ }
+
+/*
+ typedef struct _SERVICE_DESCRIPTION {
+ LPTSTR lpDescription;
+} SERVICE_DESCRIPTION,
+ *LPSERVICE_DESCRIPTION;*/
+ public static class SERVICE_DESCRIPTION extends ChangeServiceConfig2Info {
+ public String lpDescription;
+ }
+}
+
+
diff --git a/app/src/processing/app/windows/Options.java b/app/src/processing/app/windows/Options.java
index f5cff28888d..6f5239172a5 100644
--- a/app/src/processing/app/windows/Options.java
+++ b/app/src/processing/app/windows/Options.java
@@ -1,27 +1,27 @@
-/*
- * Options.java
- *
- * Created on 8. August 2007, 17:07
- *
- * To change this template, choose Tools | Template Manager
- * and open the template in the editor.
- */
-
-package processing.app.windows;
-
-import static com.sun.jna.Library.*;
-import com.sun.jna.win32.*;
-import java.util.*;
-
-/**
- *
- * @author TB
- */
-public interface Options {
- Map UNICODE_OPTIONS = new HashMap() {
- {
- put(OPTION_TYPE_MAPPER, W32APITypeMapper.UNICODE);
- put(OPTION_FUNCTION_MAPPER, W32APIFunctionMapper.UNICODE);
- }
- };
-}
+/*
+ * Options.java
+ *
+ * Created on 8. August 2007, 17:07
+ *
+ * To change this template, choose Tools | Template Manager
+ * and open the template in the editor.
+ */
+
+package processing.app.windows;
+
+import static com.sun.jna.Library.*;
+import com.sun.jna.win32.*;
+import java.util.*;
+
+/**
+ *
+ * @author TB
+ */
+public interface Options {
+ Map UNICODE_OPTIONS = new HashMap() {
+ {
+ put(OPTION_TYPE_MAPPER, W32APITypeMapper.UNICODE);
+ put(OPTION_FUNCTION_MAPPER, W32APIFunctionMapper.UNICODE);
+ }
+ };
+}
diff --git a/app/src/processing/app/windows/WINBASE.java b/app/src/processing/app/windows/WINBASE.java
index c4807cc903c..78a386f0467 100644
--- a/app/src/processing/app/windows/WINBASE.java
+++ b/app/src/processing/app/windows/WINBASE.java
@@ -1,43 +1,43 @@
-/*
- * WINBASE.java
- *
- * Created on 5. September 2007, 11:24
- *
- * To change this template, choose Tools | Template Manager
- * and open the template in the editor.
- */
-
-package processing.app.windows;
-
-import com.sun.jna.Pointer;
-import com.sun.jna.Structure;
-
-/**
- *
- * @author TB
- */
-public interface WINBASE {
-/*
-typedef struct _SECURITY_ATTRIBUTES {
- DWORD nLength;
- LPVOID lpSecurityDescriptor;
- BOOL bInheritHandle;
-} SECURITY_ATTRIBUTES,
- *PSECURITY_ATTRIBUTES,
- *LPSECURITY_ATTRIBUTES;*/
- public static class SECURITY_ATTRIBUTES extends Structure {
- public int nLength;
- public Pointer lpSecurityDescriptor;
- public boolean bInheritHandle;
- }
-
-/*
-typedef struct _FILETIME {
- DWORD dwLowDateTime;
- DWORD dwHighDateTime;
-} FILETIME, *PFILETIME, *LPFILETIME;*/
- public static class FILETIME extends Structure {
- public int dwLowDateTime;
- public int dwHighDateTime;
- }
-}
+/*
+ * WINBASE.java
+ *
+ * Created on 5. September 2007, 11:24
+ *
+ * To change this template, choose Tools | Template Manager
+ * and open the template in the editor.
+ */
+
+package processing.app.windows;
+
+import com.sun.jna.Pointer;
+import com.sun.jna.Structure;
+
+/**
+ *
+ * @author TB
+ */
+public interface WINBASE {
+/*
+typedef struct _SECURITY_ATTRIBUTES {
+ DWORD nLength;
+ LPVOID lpSecurityDescriptor;
+ BOOL bInheritHandle;
+} SECURITY_ATTRIBUTES,
+ *PSECURITY_ATTRIBUTES,
+ *LPSECURITY_ATTRIBUTES;*/
+ public static class SECURITY_ATTRIBUTES extends Structure {
+ public int nLength;
+ public Pointer lpSecurityDescriptor;
+ public boolean bInheritHandle;
+ }
+
+/*
+typedef struct _FILETIME {
+ DWORD dwLowDateTime;
+ DWORD dwHighDateTime;
+} FILETIME, *PFILETIME, *LPFILETIME;*/
+ public static class FILETIME extends Structure {
+ public int dwLowDateTime;
+ public int dwHighDateTime;
+ }
+}
diff --git a/app/src/processing/app/windows/WINERROR.java b/app/src/processing/app/windows/WINERROR.java
index 3e1146e93a6..a9382cfcbcf 100644
--- a/app/src/processing/app/windows/WINERROR.java
+++ b/app/src/processing/app/windows/WINERROR.java
@@ -1,22 +1,22 @@
-/*
- * WINERROR.java
- *
- * Created on 7. August 2007, 08:09
- *
- * To change this template, choose Tools | Template Manager
- * and open the template in the editor.
- */
-
-package processing.app.windows;
-
-
-/**
- *
- * @author TB
- */
-public interface WINERROR {
- public final static int ERROR_SUCCESS = 0;
- public final static int NO_ERROR = 0;
- public final static int ERROR_FILE_NOT_FOUND = 2;
- public final static int ERROR_MORE_DATA = 234;
-}
+/*
+ * WINERROR.java
+ *
+ * Created on 7. August 2007, 08:09
+ *
+ * To change this template, choose Tools | Template Manager
+ * and open the template in the editor.
+ */
+
+package processing.app.windows;
+
+
+/**
+ *
+ * @author TB
+ */
+public interface WINERROR {
+ public final static int ERROR_SUCCESS = 0;
+ public final static int NO_ERROR = 0;
+ public final static int ERROR_FILE_NOT_FOUND = 2;
+ public final static int ERROR_MORE_DATA = 234;
+}
diff --git a/app/src/processing/app/windows/WINNT.java b/app/src/processing/app/windows/WINNT.java
index 89aa3616804..c08c9f5a3fc 100644
--- a/app/src/processing/app/windows/WINNT.java
+++ b/app/src/processing/app/windows/WINNT.java
@@ -1,73 +1,73 @@
-/*
- * WINNT.java
- *
- * Created on 8. August 2007, 13:41
- *
- * To change this template, choose Tools | Template Manager
- * and open the template in the editor.
- */
-
-package processing.app.windows;
-
-/**
- *
- * @author TB
- */
-public interface WINNT {
- public final static int DELETE = 0x00010000;
- public final static int READ_CONTROL = 0x00020000;
- public final static int WRITE_DAC = 0x00040000;
- public final static int WRITE_OWNER = 0x00080000;
- public final static int SYNCHRONIZE = 0x00100000;
-
- public final static int STANDARD_RIGHTS_REQUIRED = 0x000F0000;
-
- public final static int STANDARD_RIGHTS_READ = READ_CONTROL;
- public final static int STANDARD_RIGHTS_WRITE = READ_CONTROL;
- public final static int STANDARD_RIGHTS_EXECUTE = READ_CONTROL;
-
- public final static int STANDARD_RIGHTS_ALL = 0x001F0000;
-
- public final static int SPECIFIC_RIGHTS_ALL = 0x0000FFFF;
-
- public final static int GENERIC_EXECUTE = 0x20000000;
-
- public final static int SERVICE_WIN32_OWN_PROCESS = 0x00000010;
-
- public final static int KEY_QUERY_VALUE = 0x0001;
- public final static int KEY_SET_VALUE = 0x0002;
- public final static int KEY_CREATE_SUB_KEY = 0x0004;
- public final static int KEY_ENUMERATE_SUB_KEYS = 0x0008;
- public final static int KEY_NOTIFY = 0x0010;
- public final static int KEY_CREATE_LINK = 0x0020;
-
- public final static int KEY_READ = ((STANDARD_RIGHTS_READ | KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY) & (~SYNCHRONIZE));
- public final static int KEY_WRITE = ((STANDARD_RIGHTS_WRITE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY) & (~SYNCHRONIZE));
-
- public final static int REG_NONE = 0; // No value type
- public final static int REG_SZ = 1; // Unicode nul terminated string
- public final static int REG_EXPAND_SZ = 2; // Unicode nul terminated string
- // (with environment variable references)
- public final static int REG_BINARY = 3; // Free form binary
- public final static int REG_DWORD = 4; // 32-bit number
- public final static int REG_DWORD_LITTLE_ENDIAN = 4; // 32-bit number (same as REG_DWORD)
- public final static int REG_DWORD_BIG_ENDIAN = 5; // 32-bit number
- public final static int REG_LINK = 6; // Symbolic Link (unicode)
- public final static int REG_MULTI_SZ = 7; // Multiple Unicode strings
- public final static int REG_RESOURCE_LIST = 8; // Resource list in the resource map
- public final static int REG_FULL_RESOURCE_DESCRIPTOR = 9; // Resource list in the hardware description
- public final static int REG_RESOURCE_REQUIREMENTS_LIST = 10;
-
- public final static int REG_OPTION_RESERVED = 0x00000000; // Parameter is reserved
- public final static int REG_OPTION_NON_VOLATILE = 0x00000000; // Key is preserved
- // when system is rebooted
- public final static int REG_OPTION_VOLATILE = 0x00000001; // Key is not preserved
- // when system is rebooted
- public final static int REG_OPTION_CREATE_LINK = 0x00000002; // Created key is a
- // symbolic link
- public final static int REG_OPTION_BACKUP_RESTORE = 0x00000004; // open for backup or restore
- // special access rules
- // privilege required
- public final static int REG_OPTION_OPEN_LINK = 0x00000008; // Open symbolic link
-
-}
+/*
+ * WINNT.java
+ *
+ * Created on 8. August 2007, 13:41
+ *
+ * To change this template, choose Tools | Template Manager
+ * and open the template in the editor.
+ */
+
+package processing.app.windows;
+
+/**
+ *
+ * @author TB
+ */
+public interface WINNT {
+ public final static int DELETE = 0x00010000;
+ public final static int READ_CONTROL = 0x00020000;
+ public final static int WRITE_DAC = 0x00040000;
+ public final static int WRITE_OWNER = 0x00080000;
+ public final static int SYNCHRONIZE = 0x00100000;
+
+ public final static int STANDARD_RIGHTS_REQUIRED = 0x000F0000;
+
+ public final static int STANDARD_RIGHTS_READ = READ_CONTROL;
+ public final static int STANDARD_RIGHTS_WRITE = READ_CONTROL;
+ public final static int STANDARD_RIGHTS_EXECUTE = READ_CONTROL;
+
+ public final static int STANDARD_RIGHTS_ALL = 0x001F0000;
+
+ public final static int SPECIFIC_RIGHTS_ALL = 0x0000FFFF;
+
+ public final static int GENERIC_EXECUTE = 0x20000000;
+
+ public final static int SERVICE_WIN32_OWN_PROCESS = 0x00000010;
+
+ public final static int KEY_QUERY_VALUE = 0x0001;
+ public final static int KEY_SET_VALUE = 0x0002;
+ public final static int KEY_CREATE_SUB_KEY = 0x0004;
+ public final static int KEY_ENUMERATE_SUB_KEYS = 0x0008;
+ public final static int KEY_NOTIFY = 0x0010;
+ public final static int KEY_CREATE_LINK = 0x0020;
+
+ public final static int KEY_READ = ((STANDARD_RIGHTS_READ | KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY) & (~SYNCHRONIZE));
+ public final static int KEY_WRITE = ((STANDARD_RIGHTS_WRITE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY) & (~SYNCHRONIZE));
+
+ public final static int REG_NONE = 0; // No value type
+ public final static int REG_SZ = 1; // Unicode nul terminated string
+ public final static int REG_EXPAND_SZ = 2; // Unicode nul terminated string
+ // (with environment variable references)
+ public final static int REG_BINARY = 3; // Free form binary
+ public final static int REG_DWORD = 4; // 32-bit number
+ public final static int REG_DWORD_LITTLE_ENDIAN = 4; // 32-bit number (same as REG_DWORD)
+ public final static int REG_DWORD_BIG_ENDIAN = 5; // 32-bit number
+ public final static int REG_LINK = 6; // Symbolic Link (unicode)
+ public final static int REG_MULTI_SZ = 7; // Multiple Unicode strings
+ public final static int REG_RESOURCE_LIST = 8; // Resource list in the resource map
+ public final static int REG_FULL_RESOURCE_DESCRIPTOR = 9; // Resource list in the hardware description
+ public final static int REG_RESOURCE_REQUIREMENTS_LIST = 10;
+
+ public final static int REG_OPTION_RESERVED = 0x00000000; // Parameter is reserved
+ public final static int REG_OPTION_NON_VOLATILE = 0x00000000; // Key is preserved
+ // when system is rebooted
+ public final static int REG_OPTION_VOLATILE = 0x00000001; // Key is not preserved
+ // when system is rebooted
+ public final static int REG_OPTION_CREATE_LINK = 0x00000002; // Created key is a
+ // symbolic link
+ public final static int REG_OPTION_BACKUP_RESTORE = 0x00000004; // open for backup or restore
+ // special access rules
+ // privilege required
+ public final static int REG_OPTION_OPEN_LINK = 0x00000008; // Open symbolic link
+
+}
diff --git a/app/src/processing/app/windows/WINREG.java b/app/src/processing/app/windows/WINREG.java
index 988f7ef3658..07a7c23cb94 100644
--- a/app/src/processing/app/windows/WINREG.java
+++ b/app/src/processing/app/windows/WINREG.java
@@ -1,21 +1,21 @@
-/*
- * WINREG.java
- *
- * Created on 17. August 2007, 14:32
- *
- * To change this template, choose Tools | Template Manager
- * and open the template in the editor.
- */
-
-package processing.app.windows;
-
-/**
- *
- * @author TB
- */
-public interface WINREG {
- public final static int HKEY_CLASSES_ROOT = 0x80000000;
- public final static int HKEY_CURRENT_USER = 0x80000001;
- public final static int HKEY_LOCAL_MACHINE = 0x80000002;
- public final static int HKEY_USERS = 0x80000003;
-}
+/*
+ * WINREG.java
+ *
+ * Created on 17. August 2007, 14:32
+ *
+ * To change this template, choose Tools | Template Manager
+ * and open the template in the editor.
+ */
+
+package processing.app.windows;
+
+/**
+ *
+ * @author TB
+ */
+public interface WINREG {
+ public final static int HKEY_CLASSES_ROOT = 0x80000000;
+ public final static int HKEY_CURRENT_USER = 0x80000001;
+ public final static int HKEY_LOCAL_MACHINE = 0x80000002;
+ public final static int HKEY_USERS = 0x80000003;
+}
diff --git a/build/shared/lib/arduino_icon.ico b/build/shared/lib/arduino_icon.ico
old mode 100755
new mode 100644
diff --git a/build/windows/dist/drivers/Arduino Due Programming Port.inf b/build/windows/dist/drivers/Arduino Due Programming Port.inf
index 16200c626d9..bc8882ff6b2 100644
--- a/build/windows/dist/drivers/Arduino Due Programming Port.inf
+++ b/build/windows/dist/drivers/Arduino Due Programming Port.inf
@@ -1,106 +1,106 @@
-;************************************************************
-; Windows USB CDC ACM Setup File
-; Copyright (c) 2000 Microsoft Corporation
-
-
-[Version]
-Signature="$Windows NT$"
-Class=Ports
-ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}
-Provider=%MFGNAME%
-LayoutFile=layout.inf
-CatalogFile=%MFGFILENAME%.cat
-DriverVer=11/15/2007,5.1.2600.0
-
-[Manufacturer]
-%MFGNAME%=DeviceList, NTamd64
-
-[DestinationDirs]
-DefaultDestDir=12
-
-
-;------------------------------------------------------------------------------
-; Windows 2000/XP/Vista-32bit Sections
-;------------------------------------------------------------------------------
-
-[DriverInstall.nt]
-include=mdmcpq.inf
-CopyFiles=DriverCopyFiles.nt
-AddReg=DriverInstall.nt.AddReg
-
-[DriverCopyFiles.nt]
-usbser.sys,,,0x20
-
-[DriverInstall.nt.AddReg]
-HKR,,DevLoader,,*ntkern
-HKR,,NTMPDriver,,%DRIVERFILENAME%.sys
-HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"
-
-[DriverInstall.nt.Services]
-AddService=usbser, 0x00000002, DriverService.nt
-
-[DriverService.nt]
-DisplayName=%SERVICE%
-ServiceType=1
-StartType=3
-ErrorControl=1
-ServiceBinary=%12%\%DRIVERFILENAME%.sys
-
-;------------------------------------------------------------------------------
-; Vista-64bit Sections
-;------------------------------------------------------------------------------
-
-[DriverInstall.NTamd64]
-include=mdmcpq.inf
-CopyFiles=DriverCopyFiles.NTamd64
-AddReg=DriverInstall.NTamd64.AddReg
-
-[DriverCopyFiles.NTamd64]
-%DRIVERFILENAME%.sys,,,0x20
-
-[DriverInstall.NTamd64.AddReg]
-HKR,,DevLoader,,*ntkern
-HKR,,NTMPDriver,,%DRIVERFILENAME%.sys
-HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"
-
-[DriverInstall.NTamd64.Services]
-AddService=usbser, 0x00000002, DriverService.NTamd64
-
-[DriverService.NTamd64]
-DisplayName=%SERVICE%
-ServiceType=1
-StartType=3
-ErrorControl=1
-ServiceBinary=%12%\%DRIVERFILENAME%.sys
-
-
-;------------------------------------------------------------------------------
-; Vendor and Product ID Definitions
-;------------------------------------------------------------------------------
-; When developing your USB device, the VID and PID used in the PC side
-; application program and the firmware on the microcontroller must match.
-; Modify the below line to use your VID and PID. Use the format as shown below.
-; Note: One INF file can be used for multiple devices with different VID and PIDs.
-; For each supported device, append ",USB\VID_xxxx&PID_yyyy" to the end of the line.
-;------------------------------------------------------------------------------
-[SourceDisksFiles]
-[SourceDisksNames]
-[DeviceList]
-%DESCRIPTION%=DriverInstall, USB\VID_2341&PID_003D
-
-[DeviceList.NTamd64]
-%DESCRIPTION%=DriverInstall, USB\VID_2341&PID_003D
-
-
-;------------------------------------------------------------------------------
-; String Definitions
-;------------------------------------------------------------------------------
-;Modify these strings to customize your device
-;------------------------------------------------------------------------------
-[Strings]
-MFGFILENAME="CDC_vista"
-DRIVERFILENAME ="usbser"
-MFGNAME="Arduino LLC (www.arduino.cc)"
-INSTDISK="Arduino Due Programming Port Driver Installer"
-DESCRIPTION="Arduino Due Programming Port"
-SERVICE="USB RS-232 Emulation Driver"
+;************************************************************
+; Windows USB CDC ACM Setup File
+; Copyright (c) 2000 Microsoft Corporation
+
+
+[Version]
+Signature="$Windows NT$"
+Class=Ports
+ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}
+Provider=%MFGNAME%
+LayoutFile=layout.inf
+CatalogFile=%MFGFILENAME%.cat
+DriverVer=11/15/2007,5.1.2600.0
+
+[Manufacturer]
+%MFGNAME%=DeviceList, NTamd64
+
+[DestinationDirs]
+DefaultDestDir=12
+
+
+;------------------------------------------------------------------------------
+; Windows 2000/XP/Vista-32bit Sections
+;------------------------------------------------------------------------------
+
+[DriverInstall.nt]
+include=mdmcpq.inf
+CopyFiles=DriverCopyFiles.nt
+AddReg=DriverInstall.nt.AddReg
+
+[DriverCopyFiles.nt]
+usbser.sys,,,0x20
+
+[DriverInstall.nt.AddReg]
+HKR,,DevLoader,,*ntkern
+HKR,,NTMPDriver,,%DRIVERFILENAME%.sys
+HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"
+
+[DriverInstall.nt.Services]
+AddService=usbser, 0x00000002, DriverService.nt
+
+[DriverService.nt]
+DisplayName=%SERVICE%
+ServiceType=1
+StartType=3
+ErrorControl=1
+ServiceBinary=%12%\%DRIVERFILENAME%.sys
+
+;------------------------------------------------------------------------------
+; Vista-64bit Sections
+;------------------------------------------------------------------------------
+
+[DriverInstall.NTamd64]
+include=mdmcpq.inf
+CopyFiles=DriverCopyFiles.NTamd64
+AddReg=DriverInstall.NTamd64.AddReg
+
+[DriverCopyFiles.NTamd64]
+%DRIVERFILENAME%.sys,,,0x20
+
+[DriverInstall.NTamd64.AddReg]
+HKR,,DevLoader,,*ntkern
+HKR,,NTMPDriver,,%DRIVERFILENAME%.sys
+HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"
+
+[DriverInstall.NTamd64.Services]
+AddService=usbser, 0x00000002, DriverService.NTamd64
+
+[DriverService.NTamd64]
+DisplayName=%SERVICE%
+ServiceType=1
+StartType=3
+ErrorControl=1
+ServiceBinary=%12%\%DRIVERFILENAME%.sys
+
+
+;------------------------------------------------------------------------------
+; Vendor and Product ID Definitions
+;------------------------------------------------------------------------------
+; When developing your USB device, the VID and PID used in the PC side
+; application program and the firmware on the microcontroller must match.
+; Modify the below line to use your VID and PID. Use the format as shown below.
+; Note: One INF file can be used for multiple devices with different VID and PIDs.
+; For each supported device, append ",USB\VID_xxxx&PID_yyyy" to the end of the line.
+;------------------------------------------------------------------------------
+[SourceDisksFiles]
+[SourceDisksNames]
+[DeviceList]
+%DESCRIPTION%=DriverInstall, USB\VID_2341&PID_003D
+
+[DeviceList.NTamd64]
+%DESCRIPTION%=DriverInstall, USB\VID_2341&PID_003D
+
+
+;------------------------------------------------------------------------------
+; String Definitions
+;------------------------------------------------------------------------------
+;Modify these strings to customize your device
+;------------------------------------------------------------------------------
+[Strings]
+MFGFILENAME="CDC_vista"
+DRIVERFILENAME ="usbser"
+MFGNAME="Arduino LLC (www.arduino.cc)"
+INSTDISK="Arduino Due Programming Port Driver Installer"
+DESCRIPTION="Arduino Due Programming Port"
+SERVICE="USB RS-232 Emulation Driver"
diff --git a/build/windows/dist/drivers/arduino.inf b/build/windows/dist/drivers/arduino.inf
index 0b74d96bbb8..25f3cec8760 100644
--- a/build/windows/dist/drivers/arduino.inf
+++ b/build/windows/dist/drivers/arduino.inf
@@ -1,139 +1,139 @@
-; Copyright 2012 Blacklabel Development, Inc.
-
-[Strings]
-DriverPackageDisplayName="Arduino USB Driver"
-ManufacturerName="Arduino LLC (www.arduino.cc)"
-ServiceName="USB RS-232 Emulation Driver"
-due.bossa.name="Bossa Program Port"
-due.programming_port.name="Arduino Due Programming Port"
-due.sketch.name="Arduino Due"
-esplora.bootloader.name="Arduino Esplora bootloader"
-esplora.sketch.name="Arduino Esplora"
-leonardo.bootloader.name="Arduino Leonardo bootloader"
-leonardo.sketch.name="Arduino Leonardo"
-lilypadUSB.bootloader.name="Arduino LilyPad USB bootloader"
-lilypadUSB.sketch.name="Arduino LilyPad USB"
-mega2560.name="Arduino Mega 2560"
-mega2560rev3.name="Arduino Mega 2560"
-megaADK.name="Arduino Mega ADK"
-megaADKrev3.name="Arduino Mega ADK"
-micro.bootloader.name="Arduino Micro bootloader"
-micro.sketch.name="Arduino Micro"
-uno.name="Arduino Uno"
-unoR3.name="Arduino Uno"
-usbserial.name="Arduino USB Serial Light Adapter"
-robotControl.bootloader.name="Arduino Robot Control bootloader"
-robotControl.sketch.name="Arduino Robot"
-robotMotor.bootloader.name="Arduino Robot Motor bootloader"
-robotMotor.sketch.name="Arduino Robot"
-
-[DefaultInstall]
-CopyINF=arduino.inf
-
-[Version]
-Class=Ports
-ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}
-Signature="$Windows NT$"
-Provider=%ManufacturerName%
-DriverPackageDisplayName=%DriverPackageDisplayName%
-CatalogFile=arduino.cat
-DriverVer=01/01/2013,1.0.0.0
-
-[Manufacturer]
-%ManufacturerName%=DeviceList, NTamd64, NTia64
-
-[DestinationDirs]
-FakeModemCopyFileSection=12
-DefaultDestDir=12
-
-[DeviceList]
-%due.bossa.name%=DriverInstall, USB\VID_03EB&PID_6124
-%due.programming_port.name%=DriverInstall, USB\VID_2341&PID_003D
-%due.sketch.name%=DriverInstall, USB\VID_2341&PID_003E&MI_00
-%esplora.bootloader.name%=DriverInstall, USB\VID_2341&PID_003C
-%esplora.sketch.name%=DriverInstall, USB\VID_2341&PID_803C&MI_00
-%leonardo.bootloader.name%=DriverInstall, USB\VID_2341&PID_0036
-%leonardo.sketch.name%=DriverInstall, USB\VID_2341&PID_8036&MI_00
-%lilypadUSB.bootloader.name%=DriverInstall, USB\VID_1B4F&PID_9207
-%lilypadUSB.sketch.name%=DriverInstall, USB\VID_1B4F&PID_9208&MI_00
-%mega2560rev3.name%=DriverInstall, USB\VID_2341&PID_0042
-%mega2560.name%=DriverInstall, USB\VID_2341&PID_0010
-%megaADK.name%=DriverInstall, USB\VID_2341&PID_003F
-%megaADKrev3.name%=DriverInstall, USB\VID_2341&PID_0044
-%micro.bootloader.name%=DriverInstall, USB\VID_2341&PID_0037
-%micro.sketch.name%=DriverInstall, USB\VID_2341&PID_8037&MI_00
-%uno.name%=DriverInstall, USB\VID_2341&PID_0001
-%unoR3.name%=DriverInstall, USB\VID_2341&PID_0043
-%usbserial.name%=DriverInstall, USB\VID_2341&PID_003B
-%robotControl.bootloader.name%=DriverInstall, USB\VID_2341&PID_0038
-%robotControl.sketch.name%=DriverInstall, USB\VID_2341&PID_8038&MI_00
-%robotMotor.bootloader.name%=DriverInstall, USB\VID_2341&PID_0039
-%robotMotor.sketch.name%=DriverInstall, USB\VID_2341&PID_8039&MI_00
-
-[DeviceList.NTamd64]
-%due.bossa.name%=DriverInstall, USB\VID_03EB&PID_6124
-%due.programming_port.name%=DriverInstall, USB\VID_2341&PID_003D
-%due.sketch.name%=DriverInstall, USB\VID_2341&PID_003E&MI_00
-%esplora.bootloader.name%=DriverInstall, USB\VID_2341&PID_003C
-%esplora.sketch.name%=DriverInstall, USB\VID_2341&PID_803C&MI_00
-%leonardo.bootloader.name%=DriverInstall, USB\VID_2341&PID_0036
-%leonardo.sketch.name%=DriverInstall, USB\VID_2341&PID_8036&MI_00
-%lilypadUSB.bootloader.name%=DriverInstall, USB\VID_1B4F&PID_9207
-%lilypadUSB.sketch.name%=DriverInstall, USB\VID_1B4F&PID_9208&MI_00
-%mega2560rev3.name%=DriverInstall, USB\VID_2341&PID_0042
-%mega2560.name%=DriverInstall, USB\VID_2341&PID_0010
-%megaADK.name%=DriverInstall, USB\VID_2341&PID_003F
-%megaADKrev3.name%=DriverInstall, USB\VID_2341&PID_0044
-%micro.bootloader.name%=DriverInstall, USB\VID_2341&PID_0037
-%micro.sketch.name%=DriverInstall, USB\VID_2341&PID_8037&MI_00
-%uno.name%=DriverInstall, USB\VID_2341&PID_0001
-%unoR3.name%=DriverInstall, USB\VID_2341&PID_0043
-%usbserial.name%=DriverInstall, USB\VID_2341&PID_003B
-%robotControl.bootloader.name%=DriverInstall, USB\VID_2341&PID_0038
-%robotControl.sketch.name%=DriverInstall, USB\VID_2341&PID_8038&MI_00
-%robotMotor.bootloader.name%=DriverInstall, USB\VID_2341&PID_0039
-%robotMotor.sketch.name%=DriverInstall, USB\VID_2341&PID_8039&MI_00
-
-[DeviceList.NTia64]
-%esplora.bootloader.name%=DriverInstall, USB\VID_2341&PID_003C
-%esplora.sketch.name%=DriverInstall, USB\VID_2341&PID_803C&MI_00
-%leonardo.bootloader.name%=DriverInstall, USB\VID_2341&PID_0036
-%leonardo.sketch.name%=DriverInstall, USB\VID_2341&PID_8036&MI_00
-%lilypadUSB.bootloader.name%=DriverInstall, USB\VID_1B4F&PID_9207
-%lilypadUSB.sketch.name%=DriverInstall, USB\VID_1B4F&PID_9208&MI_00
-%mega2560rev3.name%=DriverInstall, USB\VID_2341&PID_0042
-%mega2560.name%=DriverInstall, USB\VID_2341&PID_0010
-%megaADK.name%=DriverInstall, USB\VID_2341&PID_003F
-%megaADKrev3.name%=DriverInstall, USB\VID_2341&PID_0044
-%micro.bootloader.name%=DriverInstall, USB\VID_2341&PID_0037
-%micro.sketch.name%=DriverInstall, USB\VID_2341&PID_8037&MI_00
-%uno.name%=DriverInstall, USB\VID_2341&PID_0001
-%unoR3.name%=DriverInstall, USB\VID_2341&PID_0043
-%usbserial.name%=DriverInstall, USB\VID_2341&PID_003B
-%robotControl.bootloader.name%=DriverInstall, USB\VID_2341&PID_0038
-%robotControl.sketch.name%=DriverInstall, USB\VID_2341&PID_8038&MI_00
-%robotMotor.bootloader.name%=DriverInstall, USB\VID_2341&PID_0039
-%robotMotor.sketch.name%=DriverInstall, USB\VID_2341&PID_8039&MI_00
-
-[DriverInstall]
-include=mdmcpq.inf,usb.inf
-CopyFiles = FakeModemCopyFileSection
-AddReg=DriverAddReg
-
-[DriverAddReg]
-HKR,,DevLoader,,*ntkern
-HKR,,NTMPDriver,,usbser.sys
-HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"
-
-[DriverInstall.Services]
-include=mdmcpq.inf
-AddService=usbser, 0x00000002, DriverService
-
-[DriverService]
-DisplayName=%ServiceName%
-ServiceType=1
-StartType=3
-ErrorControl=1
-ServiceBinary=%12%\usbser.sys
-LoadOrderGroup=Base
-
+; Copyright 2012 Blacklabel Development, Inc.
+
+[Strings]
+DriverPackageDisplayName="Arduino USB Driver"
+ManufacturerName="Arduino LLC (www.arduino.cc)"
+ServiceName="USB RS-232 Emulation Driver"
+due.bossa.name="Bossa Program Port"
+due.programming_port.name="Arduino Due Programming Port"
+due.sketch.name="Arduino Due"
+esplora.bootloader.name="Arduino Esplora bootloader"
+esplora.sketch.name="Arduino Esplora"
+leonardo.bootloader.name="Arduino Leonardo bootloader"
+leonardo.sketch.name="Arduino Leonardo"
+lilypadUSB.bootloader.name="Arduino LilyPad USB bootloader"
+lilypadUSB.sketch.name="Arduino LilyPad USB"
+mega2560.name="Arduino Mega 2560"
+mega2560rev3.name="Arduino Mega 2560"
+megaADK.name="Arduino Mega ADK"
+megaADKrev3.name="Arduino Mega ADK"
+micro.bootloader.name="Arduino Micro bootloader"
+micro.sketch.name="Arduino Micro"
+uno.name="Arduino Uno"
+unoR3.name="Arduino Uno"
+usbserial.name="Arduino USB Serial Light Adapter"
+robotControl.bootloader.name="Arduino Robot Control bootloader"
+robotControl.sketch.name="Arduino Robot"
+robotMotor.bootloader.name="Arduino Robot Motor bootloader"
+robotMotor.sketch.name="Arduino Robot"
+
+[DefaultInstall]
+CopyINF=arduino.inf
+
+[Version]
+Class=Ports
+ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}
+Signature="$Windows NT$"
+Provider=%ManufacturerName%
+DriverPackageDisplayName=%DriverPackageDisplayName%
+CatalogFile=arduino.cat
+DriverVer=01/01/2013,1.0.0.0
+
+[Manufacturer]
+%ManufacturerName%=DeviceList, NTamd64, NTia64
+
+[DestinationDirs]
+FakeModemCopyFileSection=12
+DefaultDestDir=12
+
+[DeviceList]
+%due.bossa.name%=DriverInstall, USB\VID_03EB&PID_6124
+%due.programming_port.name%=DriverInstall, USB\VID_2341&PID_003D
+%due.sketch.name%=DriverInstall, USB\VID_2341&PID_003E&MI_00
+%esplora.bootloader.name%=DriverInstall, USB\VID_2341&PID_003C
+%esplora.sketch.name%=DriverInstall, USB\VID_2341&PID_803C&MI_00
+%leonardo.bootloader.name%=DriverInstall, USB\VID_2341&PID_0036
+%leonardo.sketch.name%=DriverInstall, USB\VID_2341&PID_8036&MI_00
+%lilypadUSB.bootloader.name%=DriverInstall, USB\VID_1B4F&PID_9207
+%lilypadUSB.sketch.name%=DriverInstall, USB\VID_1B4F&PID_9208&MI_00
+%mega2560rev3.name%=DriverInstall, USB\VID_2341&PID_0042
+%mega2560.name%=DriverInstall, USB\VID_2341&PID_0010
+%megaADK.name%=DriverInstall, USB\VID_2341&PID_003F
+%megaADKrev3.name%=DriverInstall, USB\VID_2341&PID_0044
+%micro.bootloader.name%=DriverInstall, USB\VID_2341&PID_0037
+%micro.sketch.name%=DriverInstall, USB\VID_2341&PID_8037&MI_00
+%uno.name%=DriverInstall, USB\VID_2341&PID_0001
+%unoR3.name%=DriverInstall, USB\VID_2341&PID_0043
+%usbserial.name%=DriverInstall, USB\VID_2341&PID_003B
+%robotControl.bootloader.name%=DriverInstall, USB\VID_2341&PID_0038
+%robotControl.sketch.name%=DriverInstall, USB\VID_2341&PID_8038&MI_00
+%robotMotor.bootloader.name%=DriverInstall, USB\VID_2341&PID_0039
+%robotMotor.sketch.name%=DriverInstall, USB\VID_2341&PID_8039&MI_00
+
+[DeviceList.NTamd64]
+%due.bossa.name%=DriverInstall, USB\VID_03EB&PID_6124
+%due.programming_port.name%=DriverInstall, USB\VID_2341&PID_003D
+%due.sketch.name%=DriverInstall, USB\VID_2341&PID_003E&MI_00
+%esplora.bootloader.name%=DriverInstall, USB\VID_2341&PID_003C
+%esplora.sketch.name%=DriverInstall, USB\VID_2341&PID_803C&MI_00
+%leonardo.bootloader.name%=DriverInstall, USB\VID_2341&PID_0036
+%leonardo.sketch.name%=DriverInstall, USB\VID_2341&PID_8036&MI_00
+%lilypadUSB.bootloader.name%=DriverInstall, USB\VID_1B4F&PID_9207
+%lilypadUSB.sketch.name%=DriverInstall, USB\VID_1B4F&PID_9208&MI_00
+%mega2560rev3.name%=DriverInstall, USB\VID_2341&PID_0042
+%mega2560.name%=DriverInstall, USB\VID_2341&PID_0010
+%megaADK.name%=DriverInstall, USB\VID_2341&PID_003F
+%megaADKrev3.name%=DriverInstall, USB\VID_2341&PID_0044
+%micro.bootloader.name%=DriverInstall, USB\VID_2341&PID_0037
+%micro.sketch.name%=DriverInstall, USB\VID_2341&PID_8037&MI_00
+%uno.name%=DriverInstall, USB\VID_2341&PID_0001
+%unoR3.name%=DriverInstall, USB\VID_2341&PID_0043
+%usbserial.name%=DriverInstall, USB\VID_2341&PID_003B
+%robotControl.bootloader.name%=DriverInstall, USB\VID_2341&PID_0038
+%robotControl.sketch.name%=DriverInstall, USB\VID_2341&PID_8038&MI_00
+%robotMotor.bootloader.name%=DriverInstall, USB\VID_2341&PID_0039
+%robotMotor.sketch.name%=DriverInstall, USB\VID_2341&PID_8039&MI_00
+
+[DeviceList.NTia64]
+%esplora.bootloader.name%=DriverInstall, USB\VID_2341&PID_003C
+%esplora.sketch.name%=DriverInstall, USB\VID_2341&PID_803C&MI_00
+%leonardo.bootloader.name%=DriverInstall, USB\VID_2341&PID_0036
+%leonardo.sketch.name%=DriverInstall, USB\VID_2341&PID_8036&MI_00
+%lilypadUSB.bootloader.name%=DriverInstall, USB\VID_1B4F&PID_9207
+%lilypadUSB.sketch.name%=DriverInstall, USB\VID_1B4F&PID_9208&MI_00
+%mega2560rev3.name%=DriverInstall, USB\VID_2341&PID_0042
+%mega2560.name%=DriverInstall, USB\VID_2341&PID_0010
+%megaADK.name%=DriverInstall, USB\VID_2341&PID_003F
+%megaADKrev3.name%=DriverInstall, USB\VID_2341&PID_0044
+%micro.bootloader.name%=DriverInstall, USB\VID_2341&PID_0037
+%micro.sketch.name%=DriverInstall, USB\VID_2341&PID_8037&MI_00
+%uno.name%=DriverInstall, USB\VID_2341&PID_0001
+%unoR3.name%=DriverInstall, USB\VID_2341&PID_0043
+%usbserial.name%=DriverInstall, USB\VID_2341&PID_003B
+%robotControl.bootloader.name%=DriverInstall, USB\VID_2341&PID_0038
+%robotControl.sketch.name%=DriverInstall, USB\VID_2341&PID_8038&MI_00
+%robotMotor.bootloader.name%=DriverInstall, USB\VID_2341&PID_0039
+%robotMotor.sketch.name%=DriverInstall, USB\VID_2341&PID_8039&MI_00
+
+[DriverInstall]
+include=mdmcpq.inf,usb.inf
+CopyFiles = FakeModemCopyFileSection
+AddReg=DriverAddReg
+
+[DriverAddReg]
+HKR,,DevLoader,,*ntkern
+HKR,,NTMPDriver,,usbser.sys
+HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"
+
+[DriverInstall.Services]
+include=mdmcpq.inf
+AddService=usbser, 0x00000002, DriverService
+
+[DriverService]
+DisplayName=%ServiceName%
+ServiceType=1
+StartType=3
+ErrorControl=1
+ServiceBinary=%12%\usbser.sys
+LoadOrderGroup=Base
+
diff --git a/build/windows/dist/drivers/bossa.inf b/build/windows/dist/drivers/bossa.inf
index 1722074f3ad..1d3555f8b92 100755
--- a/build/windows/dist/drivers/bossa.inf
+++ b/build/windows/dist/drivers/bossa.inf
@@ -1,48 +1,48 @@
-[Version] ; Version section
-Signature="$Chicago$" ; All Windows versions
-Class=Ports ; This is a serial port driver
-ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} ; Associated GUID
-Provider=%SHUMATECH% ; Driver is provided by SHUMATECH
-DriverVer=05/18/2011,1.0 ; Driver version
-
-[DestinationDirs] ; DestinationDirs section
-DefaultDestDir=12 ; Default install directory is \drivers or \IOSubSys
-
-[Manufacturer] ; Manufacturer section
-%SHUMATECH%=ShumaTech,NTamd64 ; Only one manufacturer (SHUMATECH), models section is named
- ; ShumaTech
-
-[ShumaTech] ; Models section corresponding to SHUMATECH
-%BOSSA%=BOSSA.Install,USB\VID_03EB&PID_6124 ; Identifies a device with Vendor ID (03EBh) and
- ; Product ID equal to 6124h. Corresponding Install section
- ; is named BOSSA.Install
-
-[ShumaTech.NTamd64] ; Models section corresponding to SHUMATECH
-%BOSSA%=BOSSA.Install,USB\VID_03EB&PID_6124 ; Identifies a device with Vendor ID (03EBh) and
- ; Product ID equal to 6124h. Corresponding Install section
- ; is named BOSSA.Install
-
-[BOSSA.Install] ; Install section
-include=mdmcpq.inf
-CopyFiles=FakeModemCopyFileSection
-AddReg=BOSSA.AddReg ; Registry keys to add are listed in BOSSA.AddReg
-
-[BOSSA.AddReg] ; AddReg section
-HKR,,DevLoader,,*ntkern
-HKR,,NTMPDriver,,usbser.sys
-HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"
-
-[BOSSA.Install.Services] ; Services section
-AddService=usbser,0x00000002,BOSSA.AddService ; Assign usbser as the PnP driver for the device
-
-[BOSSA.AddService] ; Service install section
-DisplayName=%USBSer% ; Name of the serial driver
-ServiceType=1 ; Service kernel driver
-StartType=3 ; Driver is started by the PnP manager
-ErrorControl=1 ; Warn about errors
-ServiceBinary=%12%\usbser.sys ; Driver filename
-
-[Strings] ; Strings section
-SHUMATECH="ShumaTech" ; String value for the SHUMATECH symbol
-BOSSA="BOSSA Program Port" ; String value for the BOSSA symbol
-USBSer="USB Serial Driver" ; String value for the USBSer symbol
+[Version] ; Version section
+Signature="$Chicago$" ; All Windows versions
+Class=Ports ; This is a serial port driver
+ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} ; Associated GUID
+Provider=%SHUMATECH% ; Driver is provided by SHUMATECH
+DriverVer=05/18/2011,1.0 ; Driver version
+
+[DestinationDirs] ; DestinationDirs section
+DefaultDestDir=12 ; Default install directory is \drivers or \IOSubSys
+
+[Manufacturer] ; Manufacturer section
+%SHUMATECH%=ShumaTech,NTamd64 ; Only one manufacturer (SHUMATECH), models section is named
+ ; ShumaTech
+
+[ShumaTech] ; Models section corresponding to SHUMATECH
+%BOSSA%=BOSSA.Install,USB\VID_03EB&PID_6124 ; Identifies a device with Vendor ID (03EBh) and
+ ; Product ID equal to 6124h. Corresponding Install section
+ ; is named BOSSA.Install
+
+[ShumaTech.NTamd64] ; Models section corresponding to SHUMATECH
+%BOSSA%=BOSSA.Install,USB\VID_03EB&PID_6124 ; Identifies a device with Vendor ID (03EBh) and
+ ; Product ID equal to 6124h. Corresponding Install section
+ ; is named BOSSA.Install
+
+[BOSSA.Install] ; Install section
+include=mdmcpq.inf
+CopyFiles=FakeModemCopyFileSection
+AddReg=BOSSA.AddReg ; Registry keys to add are listed in BOSSA.AddReg
+
+[BOSSA.AddReg] ; AddReg section
+HKR,,DevLoader,,*ntkern
+HKR,,NTMPDriver,,usbser.sys
+HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"
+
+[BOSSA.Install.Services] ; Services section
+AddService=usbser,0x00000002,BOSSA.AddService ; Assign usbser as the PnP driver for the device
+
+[BOSSA.AddService] ; Service install section
+DisplayName=%USBSer% ; Name of the serial driver
+ServiceType=1 ; Service kernel driver
+StartType=3 ; Driver is started by the PnP manager
+ErrorControl=1 ; Warn about errors
+ServiceBinary=%12%\usbser.sys ; Driver filename
+
+[Strings] ; Strings section
+SHUMATECH="ShumaTech" ; String value for the SHUMATECH symbol
+BOSSA="BOSSA Program Port" ; String value for the BOSSA symbol
+USBSer="USB Serial Driver" ; String value for the USBSer symbol
diff --git a/build/windows/launcher/about.bmp b/build/windows/launcher/about.bmp
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/config.xml b/build/windows/launcher/config.xml
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/.classpath b/build/windows/launcher/launch4j/.classpath
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/.project b/build/windows/launcher/launch4j/.project
old mode 100755
new mode 100644
index 1c1309dfaf2..0607fa0ec40
--- a/build/windows/launcher/launch4j/.project
+++ b/build/windows/launcher/launch4j/.project
@@ -1,17 +1,17 @@
-
-
- launch4j
-
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
-
- org.eclipse.jdt.core.javanature
-
-
+
+
+ launch4j
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/build/windows/launcher/launch4j/.settings/org.eclipse.jdt.core.prefs b/build/windows/launcher/launch4j/.settings/org.eclipse.jdt.core.prefs
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/LICENSE.txt b/build/windows/launcher/launch4j/LICENSE.txt
old mode 100755
new mode 100644
index 82223322f56..0ade5f46f95
--- a/build/windows/launcher/launch4j/LICENSE.txt
+++ b/build/windows/launcher/launch4j/LICENSE.txt
@@ -1,30 +1,30 @@
-Launch4j (http://launch4j.sourceforge.net/)
-Cross-platform Java application wrapper for creating Windows native executables.
-
-Copyright (c) 2004, 2008 Grzegorz Kowal
-
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+Launch4j (http://launch4j.sourceforge.net/)
+Cross-platform Java application wrapper for creating Windows native executables.
+
+Copyright (c) 2004, 2008 Grzegorz Kowal
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/build/windows/launcher/launch4j/bin/COPYING b/build/windows/launcher/launch4j/bin/COPYING
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/build.xml b/build/windows/launcher/launch4j/build.xml
old mode 100755
new mode 100644
index a7682ce0c01..9f528afee6a
--- a/build/windows/launcher/launch4j/build.xml
+++ b/build/windows/launcher/launch4j/build.xml
@@ -1,62 +1,62 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/windows/launcher/launch4j/demo/ConsoleApp/build.bat b/build/windows/launcher/launch4j/demo/ConsoleApp/build.bat
index ed5f704e306..928fc900cbd 100755
--- a/build/windows/launcher/launch4j/demo/ConsoleApp/build.bat
+++ b/build/windows/launcher/launch4j/demo/ConsoleApp/build.bat
@@ -1,14 +1,14 @@
-@echo off
-if "%ANT_HOME%"=="" goto noAntHome
-if "%JAVA_HOME%"=="" goto noJavaHome
-call "%ANT_HOME%\bin\ant.bat" exe
-goto end
-
-:noAntHome
-echo ANT_HOME environment variable is not set
-goto end
-
-:noJavaHome
-echo JAVA_HOME environment variable is not set
-
-:end
+@echo off
+if "%ANT_HOME%"=="" goto noAntHome
+if "%JAVA_HOME%"=="" goto noJavaHome
+call "%ANT_HOME%\bin\ant.bat" exe
+goto end
+
+:noAntHome
+echo ANT_HOME environment variable is not set
+goto end
+
+:noJavaHome
+echo JAVA_HOME environment variable is not set
+
+:end
diff --git a/build/windows/launcher/launch4j/demo/ConsoleApp/build.xml b/build/windows/launcher/launch4j/demo/ConsoleApp/build.xml
old mode 100755
new mode 100644
index 5f3473da651..e6d5c395be1
--- a/build/windows/launcher/launch4j/demo/ConsoleApp/build.xml
+++ b/build/windows/launcher/launch4j/demo/ConsoleApp/build.xml
@@ -1,57 +1,57 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/windows/launcher/launch4j/demo/ConsoleApp/l4j/ConsoleApp.ico b/build/windows/launcher/launch4j/demo/ConsoleApp/l4j/ConsoleApp.ico
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/demo/ConsoleApp/lib/readme.txt b/build/windows/launcher/launch4j/demo/ConsoleApp/lib/readme.txt
old mode 100755
new mode 100644
index ef44ded3a1a..a40a6b9c087
--- a/build/windows/launcher/launch4j/demo/ConsoleApp/lib/readme.txt
+++ b/build/windows/launcher/launch4j/demo/ConsoleApp/lib/readme.txt
@@ -1,8 +1,8 @@
-Put your jar libs here and the build script will include them
-in the classpath stored inside the jar manifest.
-In order to run your application move the output exe file from
-the dist directory to the same level as lib.
-
-SimpleApp.exe
-lib/
-lib/xml.jar
+Put your jar libs here and the build script will include them
+in the classpath stored inside the jar manifest.
+In order to run your application move the output exe file from
+the dist directory to the same level as lib.
+
+SimpleApp.exe
+lib/
+lib/xml.jar
diff --git a/build/windows/launcher/launch4j/demo/ConsoleApp/readme.txt b/build/windows/launcher/launch4j/demo/ConsoleApp/readme.txt
old mode 100755
new mode 100644
index fa38dc8bd2f..f971cd69eaa
--- a/build/windows/launcher/launch4j/demo/ConsoleApp/readme.txt
+++ b/build/windows/launcher/launch4j/demo/ConsoleApp/readme.txt
@@ -1 +1 @@
-To build the example application set JAVA_HOME and ANT_HOME environment variables.
+To build the example application set JAVA_HOME and ANT_HOME environment variables.
diff --git a/build/windows/launcher/launch4j/demo/ConsoleApp/src/net/sf/launch4j/example/ConsoleApp.java b/build/windows/launcher/launch4j/demo/ConsoleApp/src/net/sf/launch4j/example/ConsoleApp.java
old mode 100755
new mode 100644
index eb1398c2c5f..4bbeb0b9ed2
--- a/build/windows/launcher/launch4j/demo/ConsoleApp/src/net/sf/launch4j/example/ConsoleApp.java
+++ b/build/windows/launcher/launch4j/demo/ConsoleApp/src/net/sf/launch4j/example/ConsoleApp.java
@@ -1,72 +1,72 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package net.sf.launch4j.example;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-
-/**
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public class ConsoleApp {
- public static void main(String[] args) {
- StringBuffer sb = new StringBuffer("Hello World!\n\nJava version: ");
- sb.append(System.getProperty("java.version"));
- sb.append("\nJava home: ");
- sb.append(System.getProperty("java.home"));
- sb.append("\nCurrent dir: ");
- sb.append(System.getProperty("user.dir"));
- if (args.length > 0) {
- sb.append("\nArgs: ");
- for (int i = 0; i < args.length; i++) {
- sb.append(args[i]);
- sb.append(' ');
- }
- }
- sb.append("\n\nEnter a line of text, Ctrl-C to stop.\n\n>");
- System.out.print(sb.toString());
- try {
- BufferedReader is = new BufferedReader(new InputStreamReader(System.in));
- String line;
- while ((line = is.readLine()) != null && !line.equalsIgnoreCase("quit")) {
- System.out.print("You wrote: " + line + "\n\n>");
- }
- is.close();
- System.exit(123);
- } catch (IOException e) {
- System.err.print(e);
- }
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+package net.sf.launch4j.example;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class ConsoleApp {
+ public static void main(String[] args) {
+ StringBuffer sb = new StringBuffer("Hello World!\n\nJava version: ");
+ sb.append(System.getProperty("java.version"));
+ sb.append("\nJava home: ");
+ sb.append(System.getProperty("java.home"));
+ sb.append("\nCurrent dir: ");
+ sb.append(System.getProperty("user.dir"));
+ if (args.length > 0) {
+ sb.append("\nArgs: ");
+ for (int i = 0; i < args.length; i++) {
+ sb.append(args[i]);
+ sb.append(' ');
+ }
+ }
+ sb.append("\n\nEnter a line of text, Ctrl-C to stop.\n\n>");
+ System.out.print(sb.toString());
+ try {
+ BufferedReader is = new BufferedReader(new InputStreamReader(System.in));
+ String line;
+ while ((line = is.readLine()) != null && !line.equalsIgnoreCase("quit")) {
+ System.out.print("You wrote: " + line + "\n\n>");
+ }
+ is.close();
+ System.exit(123);
+ } catch (IOException e) {
+ System.err.print(e);
+ }
+ }
+}
diff --git a/build/windows/launcher/launch4j/demo/LICENSE.txt b/build/windows/launcher/launch4j/demo/LICENSE.txt
old mode 100755
new mode 100644
index d6d6bb5eac1..ffa608cbbcd
--- a/build/windows/launcher/launch4j/demo/LICENSE.txt
+++ b/build/windows/launcher/launch4j/demo/LICENSE.txt
@@ -1,30 +1,30 @@
-Launch4j (http://launch4j.sourceforge.net/)
-Cross-platform Java application wrapper for creating Windows native executables.
-
-Copyright (c) 2004, 2007 Grzegorz Kowal
-
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+Launch4j (http://launch4j.sourceforge.net/)
+Cross-platform Java application wrapper for creating Windows native executables.
+
+Copyright (c) 2004, 2007 Grzegorz Kowal
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/build/windows/launcher/launch4j/demo/SimpleApp/build.bat b/build/windows/launcher/launch4j/demo/SimpleApp/build.bat
index ed5f704e306..928fc900cbd 100755
--- a/build/windows/launcher/launch4j/demo/SimpleApp/build.bat
+++ b/build/windows/launcher/launch4j/demo/SimpleApp/build.bat
@@ -1,14 +1,14 @@
-@echo off
-if "%ANT_HOME%"=="" goto noAntHome
-if "%JAVA_HOME%"=="" goto noJavaHome
-call "%ANT_HOME%\bin\ant.bat" exe
-goto end
-
-:noAntHome
-echo ANT_HOME environment variable is not set
-goto end
-
-:noJavaHome
-echo JAVA_HOME environment variable is not set
-
-:end
+@echo off
+if "%ANT_HOME%"=="" goto noAntHome
+if "%JAVA_HOME%"=="" goto noJavaHome
+call "%ANT_HOME%\bin\ant.bat" exe
+goto end
+
+:noAntHome
+echo ANT_HOME environment variable is not set
+goto end
+
+:noJavaHome
+echo JAVA_HOME environment variable is not set
+
+:end
diff --git a/build/windows/launcher/launch4j/demo/SimpleApp/build.xml b/build/windows/launcher/launch4j/demo/SimpleApp/build.xml
old mode 100755
new mode 100644
index 82f4b49980b..acadbdc01dc
--- a/build/windows/launcher/launch4j/demo/SimpleApp/build.xml
+++ b/build/windows/launcher/launch4j/demo/SimpleApp/build.xml
@@ -1,52 +1,52 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/windows/launcher/launch4j/demo/SimpleApp/l4j/SimpleApp.ico b/build/windows/launcher/launch4j/demo/SimpleApp/l4j/SimpleApp.ico
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/demo/SimpleApp/l4j/SimpleApp.xml b/build/windows/launcher/launch4j/demo/SimpleApp/l4j/SimpleApp.xml
old mode 100755
new mode 100644
index 9a7dc940a62..5bccb0b3e55
--- a/build/windows/launcher/launch4j/demo/SimpleApp/l4j/SimpleApp.xml
+++ b/build/windows/launcher/launch4j/demo/SimpleApp/l4j/SimpleApp.xml
@@ -1,18 +1,18 @@
-
- gui
- ../SimpleApp.jar
- ../SimpleApp.exe
- SimpleApp
- .
- true
- SimpleApp.ico
-
- 1.4.0
-
-
- splash.bmp
- true
- 60
- true
-
+
+ gui
+ ../SimpleApp.jar
+ ../SimpleApp.exe
+ SimpleApp
+ .
+ true
+ SimpleApp.ico
+
+ 1.4.0
+
+
+ splash.bmp
+ true
+ 60
+ true
+
\ No newline at end of file
diff --git a/build/windows/launcher/launch4j/demo/SimpleApp/l4j/splash.bmp b/build/windows/launcher/launch4j/demo/SimpleApp/l4j/splash.bmp
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/demo/SimpleApp/lib/readme.txt b/build/windows/launcher/launch4j/demo/SimpleApp/lib/readme.txt
old mode 100755
new mode 100644
index ef44ded3a1a..a40a6b9c087
--- a/build/windows/launcher/launch4j/demo/SimpleApp/lib/readme.txt
+++ b/build/windows/launcher/launch4j/demo/SimpleApp/lib/readme.txt
@@ -1,8 +1,8 @@
-Put your jar libs here and the build script will include them
-in the classpath stored inside the jar manifest.
-In order to run your application move the output exe file from
-the dist directory to the same level as lib.
-
-SimpleApp.exe
-lib/
-lib/xml.jar
+Put your jar libs here and the build script will include them
+in the classpath stored inside the jar manifest.
+In order to run your application move the output exe file from
+the dist directory to the same level as lib.
+
+SimpleApp.exe
+lib/
+lib/xml.jar
diff --git a/build/windows/launcher/launch4j/demo/SimpleApp/readme.txt b/build/windows/launcher/launch4j/demo/SimpleApp/readme.txt
old mode 100755
new mode 100644
index fa38dc8bd2f..f971cd69eaa
--- a/build/windows/launcher/launch4j/demo/SimpleApp/readme.txt
+++ b/build/windows/launcher/launch4j/demo/SimpleApp/readme.txt
@@ -1 +1 @@
-To build the example application set JAVA_HOME and ANT_HOME environment variables.
+To build the example application set JAVA_HOME and ANT_HOME environment variables.
diff --git a/build/windows/launcher/launch4j/demo/SimpleApp/src/net/sf/launch4j/example/SimpleApp.java b/build/windows/launcher/launch4j/demo/SimpleApp/src/net/sf/launch4j/example/SimpleApp.java
old mode 100755
new mode 100644
index 8e87c595391..c245c393ffc
--- a/build/windows/launcher/launch4j/demo/SimpleApp/src/net/sf/launch4j/example/SimpleApp.java
+++ b/build/windows/launcher/launch4j/demo/SimpleApp/src/net/sf/launch4j/example/SimpleApp.java
@@ -1,104 +1,104 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package net.sf.launch4j.example;
-
-import java.awt.Dimension;
-import java.awt.Toolkit;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-
-import javax.swing.JFrame;
-import javax.swing.JMenu;
-import javax.swing.JMenuBar;
-import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
-import javax.swing.UIManager;
-
-public class SimpleApp extends JFrame {
- public SimpleApp(String[] args) {
- super("Java Application");
- final int inset = 100;
- Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
- setBounds (inset, inset,
- screenSize.width - inset * 2, screenSize.height - inset * 2);
-
- JMenu menu = new JMenu("File");
- menu.add(new JMenuItem("Open"));
- menu.add(new JMenuItem("Save"));
- JMenuBar mb = new JMenuBar();
- mb.setOpaque(true);
- mb.add(menu);
- setJMenuBar(mb);
-
- this.addWindowListener(new WindowAdapter() {
- public void windowClosing(WindowEvent e) {
- System.exit(123);
- }});
- setVisible(true);
-
- StringBuffer sb = new StringBuffer("Java version: ");
- sb.append(System.getProperty("java.version"));
- sb.append("\nJava home: ");
- sb.append(System.getProperty("java.home"));
- sb.append("\nCurrent dir: ");
- sb.append(System.getProperty("user.dir"));
- if (args.length > 0) {
- sb.append("\nArgs: ");
- for (int i = 0; i < args.length; i++) {
- sb.append(args[i]);
- sb.append(' ');
- }
- }
- JOptionPane.showMessageDialog(this,
- sb.toString(),
- "Info",
- JOptionPane.INFORMATION_MESSAGE);
- }
-
- public static void setLAF() {
- JFrame.setDefaultLookAndFeelDecorated(true);
- Toolkit.getDefaultToolkit().setDynamicLayout(true);
- System.setProperty("sun.awt.noerasebackground","true");
- try {
- UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
- } catch (Exception e) {
- System.err.println("Failed to set LookAndFeel");
- }
- }
-
- public static void main(String[] args) {
- setLAF();
- new SimpleApp(args);
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+package net.sf.launch4j.example;
+
+import java.awt.Dimension;
+import java.awt.Toolkit;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import javax.swing.JFrame;
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.UIManager;
+
+public class SimpleApp extends JFrame {
+ public SimpleApp(String[] args) {
+ super("Java Application");
+ final int inset = 100;
+ Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+ setBounds (inset, inset,
+ screenSize.width - inset * 2, screenSize.height - inset * 2);
+
+ JMenu menu = new JMenu("File");
+ menu.add(new JMenuItem("Open"));
+ menu.add(new JMenuItem("Save"));
+ JMenuBar mb = new JMenuBar();
+ mb.setOpaque(true);
+ mb.add(menu);
+ setJMenuBar(mb);
+
+ this.addWindowListener(new WindowAdapter() {
+ public void windowClosing(WindowEvent e) {
+ System.exit(123);
+ }});
+ setVisible(true);
+
+ StringBuffer sb = new StringBuffer("Java version: ");
+ sb.append(System.getProperty("java.version"));
+ sb.append("\nJava home: ");
+ sb.append(System.getProperty("java.home"));
+ sb.append("\nCurrent dir: ");
+ sb.append(System.getProperty("user.dir"));
+ if (args.length > 0) {
+ sb.append("\nArgs: ");
+ for (int i = 0; i < args.length; i++) {
+ sb.append(args[i]);
+ sb.append(' ');
+ }
+ }
+ JOptionPane.showMessageDialog(this,
+ sb.toString(),
+ "Info",
+ JOptionPane.INFORMATION_MESSAGE);
+ }
+
+ public static void setLAF() {
+ JFrame.setDefaultLookAndFeelDecorated(true);
+ Toolkit.getDefaultToolkit().setDynamicLayout(true);
+ System.setProperty("sun.awt.noerasebackground","true");
+ try {
+ UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
+ } catch (Exception e) {
+ System.err.println("Failed to set LookAndFeel");
+ }
+ }
+
+ public static void main(String[] args) {
+ setLAF();
+ new SimpleApp(args);
+ }
+}
diff --git a/build/windows/launcher/launch4j/demo/readme.txt b/build/windows/launcher/launch4j/demo/readme.txt
old mode 100755
new mode 100644
index f5917821449..67df9a9212a
--- a/build/windows/launcher/launch4j/demo/readme.txt
+++ b/build/windows/launcher/launch4j/demo/readme.txt
@@ -1,3 +1,3 @@
-JRE/SDK 1.4.0 or higher must be installed on your system to run this demo.
-
-try running it with some command line arguments...
+JRE/SDK 1.4.0 or higher must be installed on your system to run this demo.
+
+try running it with some command line arguments...
diff --git a/build/windows/launcher/launch4j/head/LICENSE.txt b/build/windows/launcher/launch4j/head/LICENSE.txt
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/head_src/LICENSE.txt b/build/windows/launcher/launch4j/head_src/LICENSE.txt
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/head_src/consolehead/Makefile.win b/build/windows/launcher/launch4j/head_src/consolehead/Makefile.win
index 349e4c00f5c..23cb75a7c6e 100755
--- a/build/windows/launcher/launch4j/head_src/consolehead/Makefile.win
+++ b/build/windows/launcher/launch4j/head_src/consolehead/Makefile.win
@@ -1,33 +1,33 @@
-# Project: consolehead
-# Makefile created by Dev-C++ 4.9.9.2
-
-CPP = g++.exe
-CC = gcc.exe
-WINDRES = windres.exe
-RES =
-OBJ = ../../head/consolehead.o ../../head/head.o $(RES)
-LINKOBJ = ../../head/consolehead.o ../../head/head.o $(RES)
-LIBS = -L"C:/Dev-Cpp/lib" -n -s
-INCS = -I"C:/Dev-Cpp/include"
-CXXINCS = -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include"
-BIN = consolehead.exe
-CXXFLAGS = $(CXXINCS) -fexpensive-optimizations -O3
-CFLAGS = $(INCS) -fexpensive-optimizations -O3
-RM = rm -f
-
-.PHONY: all all-before all-after clean clean-custom
-
-all: all-before consolehead.exe all-after
-
-
-clean: clean-custom
- ${RM} $(OBJ) $(BIN)
-
-$(BIN): $(OBJ)
-# $(CC) $(LINKOBJ) -o "consolehead.exe" $(LIBS)
-
-../../head/consolehead.o: consolehead.c
- $(CC) -c consolehead.c -o ../../head/consolehead.o $(CFLAGS)
-
-../../head/head.o: ../head.c
- $(CC) -c ../head.c -o ../../head/head.o $(CFLAGS)
+# Project: consolehead
+# Makefile created by Dev-C++ 4.9.9.2
+
+CPP = g++.exe
+CC = gcc.exe
+WINDRES = windres.exe
+RES =
+OBJ = ../../head/consolehead.o ../../head/head.o $(RES)
+LINKOBJ = ../../head/consolehead.o ../../head/head.o $(RES)
+LIBS = -L"C:/Dev-Cpp/lib" -n -s
+INCS = -I"C:/Dev-Cpp/include"
+CXXINCS = -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include"
+BIN = consolehead.exe
+CXXFLAGS = $(CXXINCS) -fexpensive-optimizations -O3
+CFLAGS = $(INCS) -fexpensive-optimizations -O3
+RM = rm -f
+
+.PHONY: all all-before all-after clean clean-custom
+
+all: all-before consolehead.exe all-after
+
+
+clean: clean-custom
+ ${RM} $(OBJ) $(BIN)
+
+$(BIN): $(OBJ)
+# $(CC) $(LINKOBJ) -o "consolehead.exe" $(LIBS)
+
+../../head/consolehead.o: consolehead.c
+ $(CC) -c consolehead.c -o ../../head/consolehead.o $(CFLAGS)
+
+../../head/head.o: ../head.c
+ $(CC) -c ../head.c -o ../../head/head.o $(CFLAGS)
diff --git a/build/windows/launcher/launch4j/head_src/consolehead/consolehead.c b/build/windows/launcher/launch4j/head_src/consolehead/consolehead.c
old mode 100755
new mode 100644
index 755a7673c10..fbaea0d4736
--- a/build/windows/launcher/launch4j/head_src/consolehead/consolehead.c
+++ b/build/windows/launcher/launch4j/head_src/consolehead/consolehead.c
@@ -1,65 +1,65 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- 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.
-
- Except as contained in this notice, the name(s) of the above copyright holders
- shall not be used in advertising or otherwise to promote the sale, use or other
- dealings in this Software without prior written authorization.
-
- 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.
-*/
-
-#include "../resource.h"
-#include "../head.h"
-
-int main(int argc, char* argv[])
-{
- setConsoleFlag();
- LPTSTR cmdLine = GetCommandLine();
- if (*cmdLine == '"') {
- if (*(cmdLine = strchr(cmdLine + 1, '"') + 1)) {
- cmdLine++;
- }
- } else if ((cmdLine = strchr(cmdLine, ' ')) != NULL) {
- cmdLine++;
- } else {
- cmdLine = "";
- }
- int result = prepare(cmdLine);
- if (result == ERROR_ALREADY_EXISTS) {
- char errMsg[BIG_STR] = {0};
- loadString(INSTANCE_ALREADY_EXISTS_MSG, errMsg);
- msgBox(errMsg);
- closeLogFile();
- return 2;
- }
- if (result != TRUE) {
- signalError();
- return 1;
- }
-
- result = (int) execute(TRUE);
- if (result == -1) {
- signalError();
- } else {
- return result;
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ 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.
+
+ Except as contained in this notice, the name(s) of the above copyright holders
+ shall not be used in advertising or otherwise to promote the sale, use or other
+ dealings in this Software without prior written authorization.
+
+ 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.
+*/
+
+#include "../resource.h"
+#include "../head.h"
+
+int main(int argc, char* argv[])
+{
+ setConsoleFlag();
+ LPTSTR cmdLine = GetCommandLine();
+ if (*cmdLine == '"') {
+ if (*(cmdLine = strchr(cmdLine + 1, '"') + 1)) {
+ cmdLine++;
+ }
+ } else if ((cmdLine = strchr(cmdLine, ' ')) != NULL) {
+ cmdLine++;
+ } else {
+ cmdLine = "";
+ }
+ int result = prepare(cmdLine);
+ if (result == ERROR_ALREADY_EXISTS) {
+ char errMsg[BIG_STR] = {0};
+ loadString(INSTANCE_ALREADY_EXISTS_MSG, errMsg);
+ msgBox(errMsg);
+ closeLogFile();
+ return 2;
+ }
+ if (result != TRUE) {
+ signalError();
+ return 1;
+ }
+
+ result = (int) execute(TRUE);
+ if (result == -1) {
+ signalError();
+ } else {
+ return result;
+ }
+}
diff --git a/build/windows/launcher/launch4j/head_src/consolehead/consolehead.dev b/build/windows/launcher/launch4j/head_src/consolehead/consolehead.dev
index a309ec94f65..2f2991a6f0a 100755
--- a/build/windows/launcher/launch4j/head_src/consolehead/consolehead.dev
+++ b/build/windows/launcher/launch4j/head_src/consolehead/consolehead.dev
@@ -1,108 +1,108 @@
-[Project]
-FileName=consolehead.dev
-Name=consolehead
-UnitCount=4
-Type=1
-Ver=1
-ObjFiles=
-Includes=
-Libs=
-PrivateResource=
-ResourceIncludes=
-MakeIncludes=
-Compiler=
-CppCompiler=
-Linker=-n_@@_
-IsCpp=0
-Icon=
-ExeOutput=
-ObjectOutput=..\..\head
-OverrideOutput=0
-OverrideOutputName=consolehead.exe
-HostApplication=
-Folders=
-CommandLine=
-UseCustomMakefile=0
-CustomMakefile=Makefile.win
-IncludeVersionInfo=0
-SupportXPThemes=0
-CompilerSet=0
-CompilerSettings=0000000001001000000100
-
-[Unit1]
-FileName=consolehead.c
-CompileCpp=0
-Folder=consolehead
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[VersionInfo]
-Major=0
-Minor=1
-Release=1
-Build=1
-LanguageID=1033
-CharsetID=1252
-CompanyName=
-FileVersion=
-FileDescription=Developed using the Dev-C++ IDE
-InternalName=
-LegalCopyright=
-LegalTrademarks=
-OriginalFilename=
-ProductName=
-ProductVersion=
-AutoIncBuildNr=0
-
-[Unit2]
-FileName=..\resource.h
-CompileCpp=0
-Folder=consolehead
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit3]
-FileName=..\head.c
-CompileCpp=0
-Folder=consolehead
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit4]
-FileName=..\head.h
-CompileCpp=0
-Folder=consolehead
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit5]
-FileName=..\head.rc
-Folder=consolehead
-Compile=1
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit6]
-FileName=..\resid.h
-CompileCpp=0
-Folder=consolehead
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
+[Project]
+FileName=consolehead.dev
+Name=consolehead
+UnitCount=4
+Type=1
+Ver=1
+ObjFiles=
+Includes=
+Libs=
+PrivateResource=
+ResourceIncludes=
+MakeIncludes=
+Compiler=
+CppCompiler=
+Linker=-n_@@_
+IsCpp=0
+Icon=
+ExeOutput=
+ObjectOutput=..\..\head
+OverrideOutput=0
+OverrideOutputName=consolehead.exe
+HostApplication=
+Folders=
+CommandLine=
+UseCustomMakefile=0
+CustomMakefile=Makefile.win
+IncludeVersionInfo=0
+SupportXPThemes=0
+CompilerSet=0
+CompilerSettings=0000000001001000000100
+
+[Unit1]
+FileName=consolehead.c
+CompileCpp=0
+Folder=consolehead
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+
+[VersionInfo]
+Major=0
+Minor=1
+Release=1
+Build=1
+LanguageID=1033
+CharsetID=1252
+CompanyName=
+FileVersion=
+FileDescription=Developed using the Dev-C++ IDE
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=
+AutoIncBuildNr=0
+
+[Unit2]
+FileName=..\resource.h
+CompileCpp=0
+Folder=consolehead
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+
+[Unit3]
+FileName=..\head.c
+CompileCpp=0
+Folder=consolehead
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+
+[Unit4]
+FileName=..\head.h
+CompileCpp=0
+Folder=consolehead
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+
+[Unit5]
+FileName=..\head.rc
+Folder=consolehead
+Compile=1
+Link=0
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+
+[Unit6]
+FileName=..\resid.h
+CompileCpp=0
+Folder=consolehead
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+
diff --git a/build/windows/launcher/launch4j/head_src/guihead/Makefile.win b/build/windows/launcher/launch4j/head_src/guihead/Makefile.win
index 3c642f8fcf7..92f7f67dae3 100755
--- a/build/windows/launcher/launch4j/head_src/guihead/Makefile.win
+++ b/build/windows/launcher/launch4j/head_src/guihead/Makefile.win
@@ -1,38 +1,38 @@
-# Project: guihead
-# Makefile created by Dev-C++ 4.9.9.2
-
-CPP = g++.exe
-CC = gcc.exe
-WINDRES = windres.exe
-RES =
-OBJ = ../../head/guihead.o ../../head/head.o $(RES)
-LINKOBJ = ../../head/guihead.o ../../head/head.o $(RES)
-
-# removed dev-cpp flags, replacing for cygwin/mingw [fry]
-CXXFLAGS = -mwindows -mno-cygwin -O2 -Wall
-CFLAGS = -mwindows -mno-cygwin -O2 -Wall
-#CFLAGS = -I/cygdrive/c/cygwin/usr/include/mingw
-#LIBS = -L"C:/Dev-Cpp/lib" -mwindows -n -s
-#INCS = -I"C:/Dev-Cpp/include"
-#CXXINCS = -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include"
-BIN = guihead.exe
-#CXXFLAGS = $(CXXINCS) -fexpensive-optimizations -O3
-#CFLAGS = $(INCS) -fexpensive-optimizations -O3
-RM = rm -f
-
-.PHONY: all all-before all-after clean clean-custom
-
-all: all-before guihead.exe all-after
-
-
-clean: clean-custom
- ${RM} $(OBJ) $(BIN)
-
-$(BIN): $(OBJ)
-# $(CC) $(LINKOBJ) -o "guihead.exe" $(LIBS)
-
-../../head/guihead.o: guihead.c
- $(CC) -c guihead.c -o ../../head/guihead.o $(CFLAGS)
-
-../../head/head.o: ../head.c
- $(CC) -c ../head.c -o ../../head/head.o $(CFLAGS)
+# Project: guihead
+# Makefile created by Dev-C++ 4.9.9.2
+
+CPP = g++.exe
+CC = gcc.exe
+WINDRES = windres.exe
+RES =
+OBJ = ../../head/guihead.o ../../head/head.o $(RES)
+LINKOBJ = ../../head/guihead.o ../../head/head.o $(RES)
+
+# removed dev-cpp flags, replacing for cygwin/mingw [fry]
+CXXFLAGS = -mwindows -mno-cygwin -O2 -Wall
+CFLAGS = -mwindows -mno-cygwin -O2 -Wall
+#CFLAGS = -I/cygdrive/c/cygwin/usr/include/mingw
+#LIBS = -L"C:/Dev-Cpp/lib" -mwindows -n -s
+#INCS = -I"C:/Dev-Cpp/include"
+#CXXINCS = -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include"
+BIN = guihead.exe
+#CXXFLAGS = $(CXXINCS) -fexpensive-optimizations -O3
+#CFLAGS = $(INCS) -fexpensive-optimizations -O3
+RM = rm -f
+
+.PHONY: all all-before all-after clean clean-custom
+
+all: all-before guihead.exe all-after
+
+
+clean: clean-custom
+ ${RM} $(OBJ) $(BIN)
+
+$(BIN): $(OBJ)
+# $(CC) $(LINKOBJ) -o "guihead.exe" $(LIBS)
+
+../../head/guihead.o: guihead.c
+ $(CC) -c guihead.c -o ../../head/guihead.o $(CFLAGS)
+
+../../head/head.o: ../head.c
+ $(CC) -c ../head.c -o ../../head/head.o $(CFLAGS)
diff --git a/build/windows/launcher/launch4j/head_src/guihead/guihead.c b/build/windows/launcher/launch4j/head_src/guihead/guihead.c
old mode 100755
new mode 100644
index 508a5bdacbf..d58fe9a2ba8
--- a/build/windows/launcher/launch4j/head_src/guihead/guihead.c
+++ b/build/windows/launcher/launch4j/head_src/guihead/guihead.c
@@ -1,185 +1,185 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
- Sylvain Mina (single instance patch)
-
- 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.
-
- Except as contained in this notice, the name(s) of the above copyright holders
- shall not be used in advertising or otherwise to promote the sale, use or other
- dealings in this Software without prior written authorization.
-
- 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.
-*/
-
-#include "../resource.h"
-#include "../head.h"
-#include "guihead.h"
-
-extern FILE* hLog;
-extern PROCESS_INFORMATION pi;
-
-HWND hWnd;
-DWORD dwExitCode = 0;
-BOOL stayAlive = FALSE;
-BOOL splash = FALSE;
-BOOL splashTimeoutErr;
-BOOL waitForWindow;
-int splashTimeout = DEFAULT_SPLASH_TIMEOUT;
-
-int APIENTRY WinMain(HINSTANCE hInstance,
- HINSTANCE hPrevInstance,
- LPSTR lpCmdLine,
- int nCmdShow) {
- int result = prepare(lpCmdLine);
- if (result == ERROR_ALREADY_EXISTS) {
- HWND handle = getInstanceWindow();
- ShowWindow(handle, SW_SHOW);
- SetForegroundWindow(handle);
- closeLogFile();
- return 2;
- }
- if (result != TRUE) {
- signalError();
- return 1;
- }
-
- splash = loadBool(SHOW_SPLASH)
- && strstr(lpCmdLine, "--l4j-no-splash") == NULL;
- stayAlive = loadBool(GUI_HEADER_STAYS_ALIVE)
- && strstr(lpCmdLine, "--l4j-dont-wait") == NULL;
- if (splash || stayAlive) {
- hWnd = CreateWindowEx(WS_EX_TOOLWINDOW, "STATIC", "",
- WS_POPUP | SS_BITMAP,
- 0, 0, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
- if (splash) {
- char timeout[10] = {0};
- if (loadString(SPLASH_TIMEOUT, timeout)) {
- splashTimeout = atoi(timeout);
- if (splashTimeout <= 0 || splashTimeout > MAX_SPLASH_TIMEOUT) {
- splashTimeout = DEFAULT_SPLASH_TIMEOUT;
- }
- }
- splashTimeoutErr = loadBool(SPLASH_TIMEOUT_ERR)
- && strstr(lpCmdLine, "--l4j-no-splash-err") == NULL;
- waitForWindow = loadBool(SPLASH_WAITS_FOR_WINDOW);
- HANDLE hImage = LoadImage(hInstance, // handle of the instance containing the image
- MAKEINTRESOURCE(SPLASH_BITMAP), // name or identifier of image
- IMAGE_BITMAP, // type of image
- 0, // desired width
- 0, // desired height
- LR_DEFAULTSIZE);
- if (hImage == NULL) {
- signalError();
- return 1;
- }
- SendMessage(hWnd, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hImage);
- RECT rect;
- GetWindowRect(hWnd, &rect);
- int x = (GetSystemMetrics(SM_CXSCREEN) - (rect.right - rect.left)) / 2;
- int y = (GetSystemMetrics(SM_CYSCREEN) - (rect.bottom - rect.top)) / 2;
- SetWindowPos(hWnd, HWND_TOP, x, y, 0, 0, SWP_NOSIZE);
- ShowWindow(hWnd, nCmdShow);
- UpdateWindow (hWnd);
- }
- if (!SetTimer (hWnd, ID_TIMER, 1000 /* 1s */, TimerProc)) {
- signalError();
- return 1;
- }
- }
- if (execute(FALSE) == -1) {
- signalError();
- return 1;
- }
- if (!(splash || stayAlive)) {
- debug("Exit code:\t0\n");
- closeHandles();
- return 0;
- }
-
- MSG msg;
- while (GetMessage(&msg, NULL, 0, 0)) {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- debug("Exit code:\t%d\n", dwExitCode);
- closeHandles();
- return dwExitCode;
-}
-
-HWND getInstanceWindow() {
- char windowTitle[STR];
- char instWindowTitle[STR] = {0};
- if (loadString(INSTANCE_WINDOW_TITLE, instWindowTitle)) {
- HWND handle = FindWindowEx(NULL, NULL, NULL, NULL);
- while (handle != NULL) {
- GetWindowText(handle, windowTitle, STR - 1);
- if (strstr(windowTitle, instWindowTitle) != NULL) {
- return handle;
- } else {
- handle = FindWindowEx(NULL, handle, NULL, NULL);
- }
- }
- }
- return NULL;
-}
-
-BOOL CALLBACK enumwndfn(HWND hwnd, LPARAM lParam) {
- DWORD processId;
- GetWindowThreadProcessId(hwnd, &processId);
- if (pi.dwProcessId == processId) {
- LONG styles = GetWindowLong(hwnd, GWL_STYLE);
- if ((styles & WS_VISIBLE) != 0) {
- splash = FALSE;
- ShowWindow(hWnd, SW_HIDE);
- return FALSE;
- }
- }
- return TRUE;
-}
-
-VOID CALLBACK TimerProc(
- HWND hwnd, // handle of window for timer messages
- UINT uMsg, // WM_TIMER message
- UINT idEvent, // timer identifier
- DWORD dwTime) { // current system time
-
- if (splash) {
- if (splashTimeout == 0) {
- splash = FALSE;
- ShowWindow(hWnd, SW_HIDE);
- if (waitForWindow && splashTimeoutErr) {
- KillTimer(hwnd, ID_TIMER);
- signalError();
- PostQuitMessage(0);
- }
- } else {
- splashTimeout--;
- if (waitForWindow) {
- EnumWindows(enumwndfn, 0);
- }
- }
- }
- GetExitCodeProcess(pi.hProcess, &dwExitCode);
- if (dwExitCode != STILL_ACTIVE
- || !(splash || stayAlive)) {
- KillTimer(hWnd, ID_TIMER);
- PostQuitMessage(0);
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+ Sylvain Mina (single instance patch)
+
+ 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.
+
+ Except as contained in this notice, the name(s) of the above copyright holders
+ shall not be used in advertising or otherwise to promote the sale, use or other
+ dealings in this Software without prior written authorization.
+
+ 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.
+*/
+
+#include "../resource.h"
+#include "../head.h"
+#include "guihead.h"
+
+extern FILE* hLog;
+extern PROCESS_INFORMATION pi;
+
+HWND hWnd;
+DWORD dwExitCode = 0;
+BOOL stayAlive = FALSE;
+BOOL splash = FALSE;
+BOOL splashTimeoutErr;
+BOOL waitForWindow;
+int splashTimeout = DEFAULT_SPLASH_TIMEOUT;
+
+int APIENTRY WinMain(HINSTANCE hInstance,
+ HINSTANCE hPrevInstance,
+ LPSTR lpCmdLine,
+ int nCmdShow) {
+ int result = prepare(lpCmdLine);
+ if (result == ERROR_ALREADY_EXISTS) {
+ HWND handle = getInstanceWindow();
+ ShowWindow(handle, SW_SHOW);
+ SetForegroundWindow(handle);
+ closeLogFile();
+ return 2;
+ }
+ if (result != TRUE) {
+ signalError();
+ return 1;
+ }
+
+ splash = loadBool(SHOW_SPLASH)
+ && strstr(lpCmdLine, "--l4j-no-splash") == NULL;
+ stayAlive = loadBool(GUI_HEADER_STAYS_ALIVE)
+ && strstr(lpCmdLine, "--l4j-dont-wait") == NULL;
+ if (splash || stayAlive) {
+ hWnd = CreateWindowEx(WS_EX_TOOLWINDOW, "STATIC", "",
+ WS_POPUP | SS_BITMAP,
+ 0, 0, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
+ if (splash) {
+ char timeout[10] = {0};
+ if (loadString(SPLASH_TIMEOUT, timeout)) {
+ splashTimeout = atoi(timeout);
+ if (splashTimeout <= 0 || splashTimeout > MAX_SPLASH_TIMEOUT) {
+ splashTimeout = DEFAULT_SPLASH_TIMEOUT;
+ }
+ }
+ splashTimeoutErr = loadBool(SPLASH_TIMEOUT_ERR)
+ && strstr(lpCmdLine, "--l4j-no-splash-err") == NULL;
+ waitForWindow = loadBool(SPLASH_WAITS_FOR_WINDOW);
+ HANDLE hImage = LoadImage(hInstance, // handle of the instance containing the image
+ MAKEINTRESOURCE(SPLASH_BITMAP), // name or identifier of image
+ IMAGE_BITMAP, // type of image
+ 0, // desired width
+ 0, // desired height
+ LR_DEFAULTSIZE);
+ if (hImage == NULL) {
+ signalError();
+ return 1;
+ }
+ SendMessage(hWnd, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hImage);
+ RECT rect;
+ GetWindowRect(hWnd, &rect);
+ int x = (GetSystemMetrics(SM_CXSCREEN) - (rect.right - rect.left)) / 2;
+ int y = (GetSystemMetrics(SM_CYSCREEN) - (rect.bottom - rect.top)) / 2;
+ SetWindowPos(hWnd, HWND_TOP, x, y, 0, 0, SWP_NOSIZE);
+ ShowWindow(hWnd, nCmdShow);
+ UpdateWindow (hWnd);
+ }
+ if (!SetTimer (hWnd, ID_TIMER, 1000 /* 1s */, TimerProc)) {
+ signalError();
+ return 1;
+ }
+ }
+ if (execute(FALSE) == -1) {
+ signalError();
+ return 1;
+ }
+ if (!(splash || stayAlive)) {
+ debug("Exit code:\t0\n");
+ closeHandles();
+ return 0;
+ }
+
+ MSG msg;
+ while (GetMessage(&msg, NULL, 0, 0)) {
+ TranslateMessage(&msg);
+ DispatchMessage(&msg);
+ }
+ debug("Exit code:\t%d\n", dwExitCode);
+ closeHandles();
+ return dwExitCode;
+}
+
+HWND getInstanceWindow() {
+ char windowTitle[STR];
+ char instWindowTitle[STR] = {0};
+ if (loadString(INSTANCE_WINDOW_TITLE, instWindowTitle)) {
+ HWND handle = FindWindowEx(NULL, NULL, NULL, NULL);
+ while (handle != NULL) {
+ GetWindowText(handle, windowTitle, STR - 1);
+ if (strstr(windowTitle, instWindowTitle) != NULL) {
+ return handle;
+ } else {
+ handle = FindWindowEx(NULL, handle, NULL, NULL);
+ }
+ }
+ }
+ return NULL;
+}
+
+BOOL CALLBACK enumwndfn(HWND hwnd, LPARAM lParam) {
+ DWORD processId;
+ GetWindowThreadProcessId(hwnd, &processId);
+ if (pi.dwProcessId == processId) {
+ LONG styles = GetWindowLong(hwnd, GWL_STYLE);
+ if ((styles & WS_VISIBLE) != 0) {
+ splash = FALSE;
+ ShowWindow(hWnd, SW_HIDE);
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+
+VOID CALLBACK TimerProc(
+ HWND hwnd, // handle of window for timer messages
+ UINT uMsg, // WM_TIMER message
+ UINT idEvent, // timer identifier
+ DWORD dwTime) { // current system time
+
+ if (splash) {
+ if (splashTimeout == 0) {
+ splash = FALSE;
+ ShowWindow(hWnd, SW_HIDE);
+ if (waitForWindow && splashTimeoutErr) {
+ KillTimer(hwnd, ID_TIMER);
+ signalError();
+ PostQuitMessage(0);
+ }
+ } else {
+ splashTimeout--;
+ if (waitForWindow) {
+ EnumWindows(enumwndfn, 0);
+ }
+ }
+ }
+ GetExitCodeProcess(pi.hProcess, &dwExitCode);
+ if (dwExitCode != STILL_ACTIVE
+ || !(splash || stayAlive)) {
+ KillTimer(hWnd, ID_TIMER);
+ PostQuitMessage(0);
+ }
+}
diff --git a/build/windows/launcher/launch4j/head_src/guihead/guihead.dev b/build/windows/launcher/launch4j/head_src/guihead/guihead.dev
index 7c30088f11b..3addd6ff10f 100755
--- a/build/windows/launcher/launch4j/head_src/guihead/guihead.dev
+++ b/build/windows/launcher/launch4j/head_src/guihead/guihead.dev
@@ -1,109 +1,109 @@
-[Project]
-FileName=guihead.dev
-Name=guihead
-UnitCount=5
-Type=0
-Ver=1
-ObjFiles=
-Includes=
-Libs=
-PrivateResource=
-ResourceIncludes=
-MakeIncludes=
-Compiler=
-CppCompiler=
-Linker=-n_@@_
-IsCpp=0
-Icon=
-ExeOutput=
-ObjectOutput=..\..\head
-OverrideOutput=0
-OverrideOutputName=guihead.exe
-HostApplication=
-Folders=
-CommandLine=
-UseCustomMakefile=1
-CustomMakefile=Makefile.win
-IncludeVersionInfo=0
-SupportXPThemes=0
-CompilerSet=0
-CompilerSettings=0000000001001000000100
-
-[Unit1]
-FileName=guihead.c
-CompileCpp=0
-Folder=guihead
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=$(CC) -c guihead.c -o ../../head/guihead.o $(CFLAGS)
-
-[Unit2]
-FileName=guihead.h
-CompileCpp=0
-Folder=guihead
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[VersionInfo]
-Major=0
-Minor=1
-Release=1
-Build=1
-LanguageID=1033
-CharsetID=1252
-CompanyName=
-FileVersion=
-FileDescription=Developed using the Dev-C++ IDE
-InternalName=
-LegalCopyright=
-LegalTrademarks=
-OriginalFilename=
-ProductName=
-ProductVersion=
-AutoIncBuildNr=0
-
-[Unit4]
-FileName=..\head.h
-CompileCpp=0
-Folder=guihead
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit6]
-FileName=..\resid.h
-CompileCpp=0
-Folder=guihead
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit3]
-FileName=..\head.c
-CompileCpp=0
-Folder=guihead
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit5]
-FileName=..\resource.h
-CompileCpp=0
-Folder=guihead
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
+[Project]
+FileName=guihead.dev
+Name=guihead
+UnitCount=5
+Type=0
+Ver=1
+ObjFiles=
+Includes=
+Libs=
+PrivateResource=
+ResourceIncludes=
+MakeIncludes=
+Compiler=
+CppCompiler=
+Linker=-n_@@_
+IsCpp=0
+Icon=
+ExeOutput=
+ObjectOutput=..\..\head
+OverrideOutput=0
+OverrideOutputName=guihead.exe
+HostApplication=
+Folders=
+CommandLine=
+UseCustomMakefile=1
+CustomMakefile=Makefile.win
+IncludeVersionInfo=0
+SupportXPThemes=0
+CompilerSet=0
+CompilerSettings=0000000001001000000100
+
+[Unit1]
+FileName=guihead.c
+CompileCpp=0
+Folder=guihead
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=$(CC) -c guihead.c -o ../../head/guihead.o $(CFLAGS)
+
+[Unit2]
+FileName=guihead.h
+CompileCpp=0
+Folder=guihead
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+
+[VersionInfo]
+Major=0
+Minor=1
+Release=1
+Build=1
+LanguageID=1033
+CharsetID=1252
+CompanyName=
+FileVersion=
+FileDescription=Developed using the Dev-C++ IDE
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=
+AutoIncBuildNr=0
+
+[Unit4]
+FileName=..\head.h
+CompileCpp=0
+Folder=guihead
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+
+[Unit6]
+FileName=..\resid.h
+CompileCpp=0
+Folder=guihead
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+
+[Unit3]
+FileName=..\head.c
+CompileCpp=0
+Folder=guihead
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+
+[Unit5]
+FileName=..\resource.h
+CompileCpp=0
+Folder=guihead
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+
diff --git a/build/windows/launcher/launch4j/head_src/guihead/guihead.h b/build/windows/launcher/launch4j/head_src/guihead/guihead.h
old mode 100755
new mode 100644
index 2fc71e31f32..ebef39629e9
--- a/build/windows/launcher/launch4j/head_src/guihead/guihead.h
+++ b/build/windows/launcher/launch4j/head_src/guihead/guihead.h
@@ -1,43 +1,43 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- 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.
-
- Except as contained in this notice, the name(s) of the above copyright holders
- shall not be used in advertising or otherwise to promote the sale, use or other
- dealings in this Software without prior written authorization.
-
- 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.
-*/
-
-#define ID_TIMER 1
-#define DEFAULT_SPLASH_TIMEOUT 60 /* 60 seconds */
-#define MAX_SPLASH_TIMEOUT 60 * 15 /* 15 minutes */
-
-HWND getInstanceWindow();
-
-BOOL CALLBACK enumwndfn(HWND hwnd, LPARAM lParam);
-
-VOID CALLBACK TimerProc(
- HWND hwnd, // handle of window for timer messages
- UINT uMsg, // WM_TIMER message
- UINT idEvent, // timer identifier
- DWORD dwTime // current system time
-);
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ 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.
+
+ Except as contained in this notice, the name(s) of the above copyright holders
+ shall not be used in advertising or otherwise to promote the sale, use or other
+ dealings in this Software without prior written authorization.
+
+ 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.
+*/
+
+#define ID_TIMER 1
+#define DEFAULT_SPLASH_TIMEOUT 60 /* 60 seconds */
+#define MAX_SPLASH_TIMEOUT 60 * 15 /* 15 minutes */
+
+HWND getInstanceWindow();
+
+BOOL CALLBACK enumwndfn(HWND hwnd, LPARAM lParam);
+
+VOID CALLBACK TimerProc(
+ HWND hwnd, // handle of window for timer messages
+ UINT uMsg, // WM_TIMER message
+ UINT idEvent, // timer identifier
+ DWORD dwTime // current system time
+);
diff --git a/build/windows/launcher/launch4j/head_src/head.c b/build/windows/launcher/launch4j/head_src/head.c
old mode 100755
new mode 100644
index 1ff937694dc..73e215deccc
--- a/build/windows/launcher/launch4j/head_src/head.c
+++ b/build/windows/launcher/launch4j/head_src/head.c
@@ -1,818 +1,818 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2008 Grzegorz Kowal,
- Ian Roberts (jdk preference patch)
- Sylvain Mina (single instance patch)
-
- 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.
-
- Except as contained in this notice, the name(s) of the above copyright holders
- shall not be used in advertising or otherwise to promote the sale, use or other
- dealings in this Software without prior written authorization.
-
- 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.
-*/
-
-#include "resource.h"
-#include "head.h"
-
-HMODULE hModule;
-FILE* hLog;
-BOOL console = FALSE;
-BOOL wow64 = FALSE;
-int foundJava = NO_JAVA_FOUND;
-
-struct _stat statBuf;
-PROCESS_INFORMATION pi;
-DWORD priority;
-
-char mutexName[STR] = {0};
-
-char errUrl[256] = {0};
-char errTitle[STR] = "Launch4j";
-char errMsg[BIG_STR] = {0};
-
-char javaMinVer[STR] = {0};
-char javaMaxVer[STR] = {0};
-char foundJavaVer[STR] = {0};
-char foundJavaKey[_MAX_PATH] = {0};
-
-char oldPwd[_MAX_PATH] = {0};
-char workingDir[_MAX_PATH] = {0};
-char cmd[_MAX_PATH] = {0};
-char args[MAX_ARGS] = {0};
-
-FILE* openLogFile(const char* exePath, const int pathLen) {
- char path[_MAX_PATH] = {0};
- strncpy(path, exePath, pathLen);
- strcat(path, "\\launch4j.log");
- return fopen(path, "a");
-}
-
-void closeLogFile() {
- if (hLog != NULL) {
- fclose(hLog);
- }
-}
-
-void setWow64Flag() {
- LPFN_ISWOW64PROCESS fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(
- GetModuleHandle(TEXT("kernel32")), "IsWow64Process");
-
- if (fnIsWow64Process != NULL) {
- fnIsWow64Process(GetCurrentProcess(), &wow64);
- }
- debug("WOW64:\t\t%s\n", wow64 ? "yes" : "no");
-}
-
-void setConsoleFlag() {
- console = TRUE;
-}
-
-void msgBox(const char* text) {
- if (console) {
- printf("%s: %s\n", errTitle, text);
- } else {
- MessageBox(NULL, text, errTitle, MB_OK);
- }
-}
-
-void signalError() {
- DWORD err = GetLastError();
- if (err) {
- LPVOID lpMsgBuf;
- FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER
- | FORMAT_MESSAGE_FROM_SYSTEM
- | FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- err,
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
- (LPTSTR) &lpMsgBuf,
- 0,
- NULL);
- debug("Error:\t\t%s\n", (LPCTSTR) lpMsgBuf);
- strcat(errMsg, "\n\n");
- strcat(errMsg, (LPCTSTR) lpMsgBuf);
- msgBox(errMsg);
- LocalFree(lpMsgBuf);
- } else {
- msgBox(errMsg);
- }
- if (*errUrl) {
- debug("Open URL:\t%s\n", errUrl);
- ShellExecute(NULL, "open", errUrl, NULL, NULL, SW_SHOWNORMAL);
- }
- closeLogFile();
-}
-
-BOOL loadString(const int resID, char* buffer) {
- HRSRC hResource;
- HGLOBAL hResourceLoaded;
- LPBYTE lpBuffer;
-
- hResource = FindResourceEx(hModule, RT_RCDATA, MAKEINTRESOURCE(resID),
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT));
- if (NULL != hResource) {
- hResourceLoaded = LoadResource(hModule, hResource);
- if (NULL != hResourceLoaded) {
- lpBuffer = (LPBYTE) LockResource(hResourceLoaded);
- if (NULL != lpBuffer) {
- int x = 0;
- do {
- buffer[x] = (char) lpBuffer[x];
- } while (buffer[x++] != 0);
- // debug("Resource %d:\t%s\n", resID, buffer);
- return TRUE;
- }
- }
- } else {
- SetLastError(0);
- }
- return FALSE;
-}
-
-BOOL loadBool(const int resID) {
- char boolStr[20] = {0};
- loadString(resID, boolStr);
- return strcmp(boolStr, TRUE_STR) == 0;
-}
-
-int loadInt(const int resID) {
- char intStr[20] = {0};
- loadString(resID, intStr);
- return atoi(intStr);
-}
-
-BOOL regQueryValue(const char* regPath, unsigned char* buffer,
- unsigned long bufferLength) {
- HKEY hRootKey;
- char* key;
- char* value;
- if (strstr(regPath, HKEY_CLASSES_ROOT_STR) == regPath) {
- hRootKey = HKEY_CLASSES_ROOT;
- } else if (strstr(regPath, HKEY_CURRENT_USER_STR) == regPath) {
- hRootKey = HKEY_CURRENT_USER;
- } else if (strstr(regPath, HKEY_LOCAL_MACHINE_STR) == regPath) {
- hRootKey = HKEY_LOCAL_MACHINE;
- } else if (strstr(regPath, HKEY_USERS_STR) == regPath) {
- hRootKey = HKEY_USERS;
- } else if (strstr(regPath, HKEY_CURRENT_CONFIG_STR) == regPath) {
- hRootKey = HKEY_CURRENT_CONFIG;
- } else {
- return FALSE;
- }
- key = strchr(regPath, '\\') + 1;
- value = strrchr(regPath, '\\') + 1;
- *(value - 1) = 0;
-
- HKEY hKey;
- unsigned long datatype;
- BOOL result = FALSE;
- if ((wow64 && RegOpenKeyEx(hRootKey,
- key,
- 0,
- KEY_READ | KEY_WOW64_64KEY,
- &hKey) == ERROR_SUCCESS)
- || RegOpenKeyEx(hRootKey,
- key,
- 0,
- KEY_READ,
- &hKey) == ERROR_SUCCESS) {
- result = RegQueryValueEx(hKey, value, NULL, &datatype, buffer, &bufferLength)
- == ERROR_SUCCESS;
- RegCloseKey(hKey);
- }
- *(value - 1) = '\\';
- return result;
-}
-
-void regSearch(const HKEY hKey, const char* keyName, const int searchType) {
- DWORD x = 0;
- unsigned long size = BIG_STR;
- FILETIME time;
- char buffer[BIG_STR] = {0};
- while (RegEnumKeyEx(
- hKey, // handle to key to enumerate
- x++, // index of subkey to enumerate
- buffer, // address of buffer for subkey name
- &size, // address for size of subkey buffer
- NULL, // reserved
- NULL, // address of buffer for class string
- NULL, // address for size of class buffer
- &time) == ERROR_SUCCESS) {
-
- if (strcmp(buffer, javaMinVer) >= 0
- && (!*javaMaxVer || strcmp(buffer, javaMaxVer) <= 0)
- && strcmp(buffer, foundJavaVer) > 0) {
- strcpy(foundJavaVer, buffer);
- strcpy(foundJavaKey, keyName);
- appendPath(foundJavaKey, buffer);
- foundJava = searchType;
- debug("Match:\t\t%s\\%s\n", keyName, buffer);
- } else {
- debug("Ignore:\t\t%s\\%s\n", keyName, buffer);
- }
- size = BIG_STR;
- }
-}
-
-void regSearchWow(const char* keyName, const int searchType) {
- HKEY hKey;
- debug("64-bit search:\t%s...\n", keyName);
- if (wow64 && RegOpenKeyEx(HKEY_LOCAL_MACHINE,
- keyName,
- 0,
- KEY_READ | KEY_WOW64_64KEY,
- &hKey) == ERROR_SUCCESS) {
-
- regSearch(hKey, keyName, searchType | KEY_WOW64_64KEY);
- RegCloseKey(hKey);
- if ((foundJava & KEY_WOW64_64KEY) != NO_JAVA_FOUND)
- {
- debug("Using 64-bit runtime.\n");
- return;
- }
- }
- debug("32-bit search:\t%s...\n", keyName);
- if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
- keyName,
- 0,
- KEY_READ,
- &hKey) == ERROR_SUCCESS) {
- regSearch(hKey, keyName, searchType);
- RegCloseKey(hKey);
- }
-}
-
-void regSearchJreSdk(const char* jreKeyName, const char* sdkKeyName,
- const int jdkPreference) {
- if (jdkPreference == JDK_ONLY || jdkPreference == PREFER_JDK) {
- regSearchWow(sdkKeyName, FOUND_SDK);
- if (jdkPreference != JDK_ONLY) {
- regSearchWow(jreKeyName, FOUND_JRE);
- }
- } else { // jdkPreference == JRE_ONLY or PREFER_JRE
- regSearchWow(jreKeyName, FOUND_JRE);
- if (jdkPreference != JRE_ONLY) {
- regSearchWow(sdkKeyName, FOUND_SDK);
- }
- }
-}
-
-BOOL findJavaHome(char* path, const int jdkPreference) {
- regSearchJreSdk("SOFTWARE\\JavaSoft\\Java Runtime Environment",
- "SOFTWARE\\JavaSoft\\Java Development Kit",
- jdkPreference);
- if (foundJava == NO_JAVA_FOUND) {
- regSearchJreSdk("SOFTWARE\\IBM\\Java2 Runtime Environment",
- "SOFTWARE\\IBM\\Java Development Kit",
- jdkPreference);
- }
- if (foundJava != NO_JAVA_FOUND) {
- HKEY hKey;
- if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
- foundJavaKey,
- 0,
- KEY_READ | (foundJava & KEY_WOW64_64KEY),
- &hKey) == ERROR_SUCCESS) {
- unsigned char buffer[BIG_STR] = {0};
- unsigned long bufferlength = BIG_STR;
- unsigned long datatype;
- if (RegQueryValueEx(hKey, "JavaHome", NULL, &datatype, buffer,
- &bufferlength) == ERROR_SUCCESS) {
- int i = 0;
- do {
- path[i] = buffer[i];
- } while (path[i++] != 0);
- // (foundJava & FOUND_SDK) { // removed by fry
- // appendPath(path, "jre");
- //
- RegCloseKey(hKey);
- return TRUE;
- }
- RegCloseKey(hKey);
- }
- }
- return FALSE;
-}
-
-/*
- * Extract the executable name, returns path length.
- */
-int getExePath(char* exePath) {
- if (GetModuleFileName(hModule, exePath, _MAX_PATH) == 0) {
- return -1;
- }
- return strrchr(exePath, '\\') - exePath;
-}
-
-void appendPath(char* basepath, const char* path) {
- if (basepath[strlen(basepath) - 1] != '\\') {
- strcat(basepath, "\\");
- }
- strcat(basepath, path);
-}
-
-void appendJavaw(char* jrePath) {
- if (console) {
- appendPath(jrePath, "bin\\java.exe");
- } else {
- appendPath(jrePath, "bin\\javaw.exe");
- }
-}
-
-void appendLauncher(const BOOL setProcName, char* exePath,
- const int pathLen, char* cmd) {
- if (setProcName) {
- char tmpspec[_MAX_PATH];
- char tmpfile[_MAX_PATH];
- strcpy(tmpspec, cmd);
- strcat(tmpspec, LAUNCH4J_TMP_DIR);
- tmpspec[strlen(tmpspec) - 1] = 0;
- if (_stat(tmpspec, &statBuf) == 0) {
- // Remove temp launchers and manifests
- struct _finddata_t c_file;
- long hFile;
- appendPath(tmpspec, "*.exe");
- strcpy(tmpfile, cmd);
- strcat(tmpfile, LAUNCH4J_TMP_DIR);
- char* filename = tmpfile + strlen(tmpfile);
- if ((hFile = _findfirst(tmpspec, &c_file)) != -1L) {
- do {
- strcpy(filename, c_file.name);
- debug("Unlink:\t\t%s\n", tmpfile);
- _unlink(tmpfile);
- strcat(tmpfile, MANIFEST);
- debug("Unlink:\t\t%s\n", tmpfile);
- _unlink(tmpfile);
- } while (_findnext(hFile, &c_file) == 0);
- }
- _findclose(hFile);
- } else {
- if (_mkdir(tmpspec) != 0) {
- debug("Mkdir failed:\t%s\n", tmpspec);
- appendJavaw(cmd);
- return;
- }
- }
- char javaw[_MAX_PATH];
- strcpy(javaw, cmd);
- appendJavaw(javaw);
- strcpy(tmpfile, cmd);
- strcat(tmpfile, LAUNCH4J_TMP_DIR);
- char* tmpfilename = tmpfile + strlen(tmpfile);
- char* exeFilePart = exePath + pathLen + 1;
-
- // Copy manifest
- char manifest[_MAX_PATH] = {0};
- strcpy(manifest, exePath);
- strcat(manifest, MANIFEST);
- if (_stat(manifest, &statBuf) == 0) {
- strcat(tmpfile, exeFilePart);
- strcat(tmpfile, MANIFEST);
- debug("Copy:\t\t%s -> %s\n", manifest, tmpfile);
- CopyFile(manifest, tmpfile, FALSE);
- }
-
- // Copy launcher
- strcpy(tmpfilename, exeFilePart);
- debug("Copy:\t\t%s -> %s\n", javaw, tmpfile);
- if (CopyFile(javaw, tmpfile, FALSE)) {
- strcpy(cmd, tmpfile);
- return;
- } else if (_stat(javaw, &statBuf) == 0) {
- long fs = statBuf.st_size;
- if (_stat(tmpfile, &statBuf) == 0 && fs == statBuf.st_size) {
- debug("Reusing:\t\t%s\n", tmpfile);
- strcpy(cmd, tmpfile);
- return;
- }
- }
- }
- appendJavaw(cmd);
-}
-
-void appendAppClasspath(char* dst, const char* src, const char* classpath) {
- strcat(dst, src);
- if (*classpath) {
- strcat(dst, ";");
- }
-}
-
-BOOL isJrePathOk(const char* path) {
- char javaw[_MAX_PATH];
- BOOL result = FALSE;
- if (*path) {
- strcpy(javaw, path);
- appendJavaw(javaw);
- result = _stat(javaw, &statBuf) == 0;
- }
- debug("Check launcher:\t%s %s\n", javaw, result ? "(OK)" : "(n/a)");
- return result;
-}
-
-/*
- * Expand environment %variables%
- */
-BOOL expandVars(char *dst, const char *src, const char *exePath, const int pathLen) {
- char varName[STR];
- char varValue[MAX_VAR_SIZE];
- while (strlen(src) > 0) {
- char *start = strchr(src, '%');
- if (start != NULL) {
- char *end = strchr(start + 1, '%');
- if (end == NULL) {
- return FALSE;
- }
- // Copy content up to %VAR%
- strncat(dst, src, start - src);
- // Insert value of %VAR%
- *varName = 0;
- strncat(varName, start + 1, end - start - 1);
- // Remember value start for logging
- char *varValue = dst + strlen(dst);
- if (strcmp(varName, "EXEDIR") == 0) {
- strncat(dst, exePath, pathLen);
- } else if (strcmp(varName, "EXEFILE") == 0) {
- strcat(dst, exePath);
- } else if (strcmp(varName, "PWD") == 0) {
- GetCurrentDirectory(_MAX_PATH, dst + strlen(dst));
- } else if (strcmp(varName, "OLDPWD") == 0) {
- strcat(dst, oldPwd);
- } else if (strstr(varName, HKEY_STR) == varName) {
- regQueryValue(varName, dst + strlen(dst), BIG_STR);
- } else if (GetEnvironmentVariable(varName, varValue, MAX_VAR_SIZE) > 0) {
- strcat(dst, varValue);
- }
- debug("Substitute:\t%s = %s\n", varName, varValue);
- src = end + 1;
- } else {
- // Copy remaining content
- strcat(dst, src);
- break;
- }
- }
- return TRUE;
-}
-
-void appendHeapSizes(char *dst) {
- MEMORYSTATUS m;
- memset(&m, 0, sizeof(m));
- GlobalMemoryStatus(&m);
-
- appendHeapSize(dst, INITIAL_HEAP_SIZE, INITIAL_HEAP_PERCENT,
- m.dwAvailPhys, "-Xms");
- appendHeapSize(dst, MAX_HEAP_SIZE, MAX_HEAP_PERCENT,
- m.dwAvailPhys, "-Xmx");
-}
-
-void appendHeapSize(char *dst, const int absID, const int percentID,
- const DWORD freeMemory, const char *option) {
-
- const int mb = 1048576; // 1 MB
- int abs = loadInt(absID);
- int percent = loadInt(percentID);
- int free = (long long) freeMemory * percent / (100 * mb); // 100% * 1 MB
- int size = free > abs ? free : abs;
- if (size > 0) {
- debug("Heap %s:\t%d MB / %d%%, Free: %d MB, Heap size: %d MB\n",
- option, abs, percent, freeMemory / mb, size);
- strcat(dst, option);
- _itoa(size, dst + strlen(dst), 10); // 10 -- radix
- strcat(dst, "m ");
- }
-}
-
-int prepare(const char *lpCmdLine) {
- char tmp[MAX_ARGS] = {0};
- hModule = GetModuleHandle(NULL);
- if (hModule == NULL) {
- return FALSE;
- }
-
- // Get executable path
- char exePath[_MAX_PATH] = {0};
- int pathLen = getExePath(exePath);
- if (pathLen == -1) {
- return FALSE;
- }
-
- // Initialize logging
- if (strstr(lpCmdLine, "--l4j-debug") != NULL) {
- hLog = openLogFile(exePath, pathLen);
- if (hLog == NULL) {
- return FALSE;
- }
- debug("\n\nCmdLine:\t%s %s\n", exePath, lpCmdLine);
- }
-
- setWow64Flag();
-
- // Set default error message, title and optional support web site url.
- loadString(SUPPORT_URL, errUrl);
- loadString(ERR_TITLE, errTitle);
- if (!loadString(STARTUP_ERR, errMsg)) {
- return FALSE;
- }
-
- // Single instance
- loadString(MUTEX_NAME, mutexName);
- if (*mutexName) {
- SECURITY_ATTRIBUTES security;
- security.nLength = sizeof(SECURITY_ATTRIBUTES);
- security.bInheritHandle = TRUE;
- security.lpSecurityDescriptor = NULL;
- CreateMutexA(&security, FALSE, mutexName);
- if (GetLastError() == ERROR_ALREADY_EXISTS) {
- debug("Instance already exists.");
- return ERROR_ALREADY_EXISTS;
- }
- }
-
- // Working dir
- char tmp_path[_MAX_PATH] = {0};
- GetCurrentDirectory(_MAX_PATH, oldPwd);
- if (loadString(CHDIR, tmp_path)) {
- strncpy(workingDir, exePath, pathLen);
- appendPath(workingDir, tmp_path);
- _chdir(workingDir);
- debug("Working dir:\t%s\n", workingDir);
- }
-
- // Use bundled jre or find java
- if (loadString(JRE_PATH, tmp_path)) {
- char jrePath[MAX_ARGS] = {0};
- expandVars(jrePath, tmp_path, exePath, pathLen);
- debug("Bundled JRE:\t%s\n", jrePath);
- if (jrePath[0] == '\\' || jrePath[1] == ':') {
- // Absolute
- strcpy(cmd, jrePath);
- } else {
- // Relative
- strncpy(cmd, exePath, pathLen);
- appendPath(cmd, jrePath);
- }
- }
- if (!isJrePathOk(cmd)) {
- if (!loadString(JAVA_MIN_VER, javaMinVer)) {
- loadString(BUNDLED_JRE_ERR, errMsg);
- return FALSE;
- }
- loadString(JAVA_MAX_VER, javaMaxVer);
- if (!findJavaHome(cmd, loadInt(JDK_PREFERENCE))) {
- loadString(JRE_VERSION_ERR, errMsg);
- strcat(errMsg, " ");
- strcat(errMsg, javaMinVer);
- if (*javaMaxVer) {
- strcat(errMsg, " - ");
- strcat(errMsg, javaMaxVer);
- }
- loadString(DOWNLOAD_URL, errUrl);
- return FALSE;
- }
- if (!isJrePathOk(cmd)) {
- loadString(LAUNCHER_ERR, errMsg);
- return FALSE;
- }
- }
-
- // Append a path to the Path environment variable
- char jreBinPath[_MAX_PATH];
- strcpy(jreBinPath, cmd);
- strcat(jreBinPath, "\\bin");
- if (!appendToPathVar(jreBinPath)) {
- return FALSE;
- }
-
- // Set environment variables
- char envVars[MAX_VAR_SIZE] = {0};
- loadString(ENV_VARIABLES, envVars);
- char *var = strtok(envVars, "\t");
- while (var != NULL) {
- char *varValue = strchr(var, '=');
- *varValue++ = 0;
- *tmp = 0;
- expandVars(tmp, varValue, exePath, pathLen);
- debug("Set var:\t%s = %s\n", var, tmp);
- SetEnvironmentVariable(var, tmp);
- var = strtok(NULL, "\t");
- }
- *tmp = 0;
-
- // Process priority
- priority = loadInt(PRIORITY_CLASS);
-
- // Custom process name
- const BOOL setProcName = loadBool(SET_PROC_NAME)
- && strstr(lpCmdLine, "--l4j-default-proc") == NULL;
- const BOOL wrapper = loadBool(WRAPPER);
-
- char jdk_path[_MAX_PATH] = {0}; // fry
- strcpy(jdk_path, cmd);
- //msgBox(jdk_path);
-
- appendLauncher(setProcName, exePath, pathLen, cmd);
-
- // Heap sizes
- appendHeapSizes(args);
-
- // JVM options
- if (loadString(JVM_OPTIONS, tmp)) {
- strcat(tmp, " ");
- } else {
- *tmp = 0;
- }
- /*
- * Load additional JVM options from .l4j.ini file
- * Options are separated by spaces or CRLF
- * # starts an inline comment
- */
- strncpy(tmp_path, exePath, strlen(exePath) - 3);
- strcat(tmp_path, "l4j.ini");
- long hFile;
- if ((hFile = _open(tmp_path, _O_RDONLY)) != -1) {
- const int jvmOptLen = strlen(tmp);
- char* src = tmp + jvmOptLen;
- char* dst = src;
- const int len = _read(hFile, src, MAX_ARGS - jvmOptLen - BIG_STR);
- BOOL copy = TRUE;
- int i;
- for (i = 0; i < len; i++, src++) {
- if (*src == '#') {
- copy = FALSE;
- } else if (*src == 13 || *src == 10) {
- copy = TRUE;
- if (dst > tmp && *(dst - 1) != ' ') {
- *dst++ = ' ';
- }
- } else if (copy) {
- *dst++ = *src;
- }
- }
- *dst = 0;
- if (len > 0 && *(dst - 1) != ' ') {
- strcat(tmp, " ");
- }
- _close(hFile);
- }
-
- // Expand environment %variables%
- expandVars(args, tmp, exePath, pathLen);
-
- // MainClass + Classpath or Jar
- char mainClass[STR] = {0};
- char jar[_MAX_PATH] = {0};
- loadString(JAR, jar);
- if (loadString(MAIN_CLASS, mainClass)) {
- if (!loadString(CLASSPATH, tmp)) {
- return FALSE;
- }
- char exp[MAX_ARGS] = {0};
- expandVars(exp, tmp, exePath, pathLen);
- strcat(args, "-classpath \"");
- if (wrapper) {
- appendAppClasspath(args, exePath, exp);
- } else if (*jar) {
- appendAppClasspath(args, jar, exp);
- }
-
- // add tools.jar for JDK [fry]
- char tools[_MAX_PATH] = { 0 };
- sprintf(tools, "%s\\lib\\tools.jar", jdk_path);
- appendAppClasspath(args, tools, exp);
-
- // Deal with wildcards or >> strcat(args, exp); <<
- char* cp = strtok(exp, ";");
- while(cp != NULL) {
- debug("Add classpath:\t%s\n", cp);
- if (strpbrk(cp, "*?") != NULL) {
- int len = strrchr(cp, '\\') - cp + 1;
- strncpy(tmp_path, cp, len);
- char* filename = tmp_path + len;
- *filename = 0;
- struct _finddata_t c_file;
- long hFile;
- if ((hFile = _findfirst(cp, &c_file)) != -1L) {
- do {
- strcpy(filename, c_file.name);
- strcat(args, tmp_path);
- strcat(args, ";");
- debug(" \" :\t%s\n", tmp_path);
- } while (_findnext(hFile, &c_file) == 0);
- }
- _findclose(hFile);
- } else {
- strcat(args, cp);
- strcat(args, ";");
- }
- cp = strtok(NULL, ";");
- }
- *(args + strlen(args) - 1) = 0;
-
- strcat(args, "\" ");
- strcat(args, mainClass);
- } else if (wrapper) {
- strcat(args, "-jar \"");
- strcat(args, exePath);
- strcat(args, "\"");
- } else {
- strcat(args, "-jar \"");
- strncat(args, exePath, pathLen);
- appendPath(args, jar);
- strcat(args, "\"");
- }
-
- // Constant command line args
- if (loadString(CMD_LINE, tmp)) {
- strcat(args, " ");
- strcat(args, tmp);
- }
-
- // Command line args
- if (*lpCmdLine) {
- strcpy(tmp, lpCmdLine);
- char* dst;
- while ((dst = strstr(tmp, "--l4j-")) != NULL) {
- char* src = strchr(dst, ' ');
- if (src == NULL || *(src + 1) == 0) {
- *dst = 0;
- } else {
- strcpy(dst, src + 1);
- }
- }
- if (*tmp) {
- strcat(args, " ");
- strcat(args, tmp);
- }
- }
-
- debug("Launcher:\t%s\n", cmd);
- debug("Launcher args:\t%s\n", args);
- debug("Args length:\t%d/32768 chars\n", strlen(args));
- return TRUE;
-}
-
-void closeHandles() {
- CloseHandle(pi.hThread);
- CloseHandle(pi.hProcess);
- closeLogFile();
-}
-
-/*
- * Append a path to the Path environment variable
- */
-BOOL appendToPathVar(const char* path) {
- char chBuf[MAX_VAR_SIZE] = {0};
-
- const int pathSize = GetEnvironmentVariable("Path", chBuf, MAX_VAR_SIZE);
- if (MAX_VAR_SIZE - pathSize - 1 < strlen(path)) {
- return FALSE;
- }
- strcat(chBuf, ";");
- strcat(chBuf, path);
- return SetEnvironmentVariable("Path", chBuf);
-}
-
-// may need to ignore STILL_ACTIVE (error code 259) here
-// http://msdn.microsoft.com/en-us/library/ms683189(VS.85).aspx
-DWORD execute(const BOOL wait) {
- STARTUPINFO si;
- memset(&pi, 0, sizeof(pi));
- memset(&si, 0, sizeof(si));
- si.cb = sizeof(si);
-
- DWORD dwExitCode = -1;
- char cmdline[MAX_ARGS];
- strcpy(cmdline, "\"");
- strcat(cmdline, cmd);
- strcat(cmdline, "\" ");
- strcat(cmdline, args);
- if (CreateProcess(NULL, cmdline, NULL, NULL,
- TRUE, priority, NULL, NULL, &si, &pi)) {
- if (wait) {
- WaitForSingleObject(pi.hProcess, INFINITE);
- GetExitCodeProcess(pi.hProcess, &dwExitCode);
- debug("Exit code:\t%d\n", dwExitCode);
- closeHandles();
- } else {
- dwExitCode = 0;
- }
- }
- return dwExitCode;
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2008 Grzegorz Kowal,
+ Ian Roberts (jdk preference patch)
+ Sylvain Mina (single instance patch)
+
+ 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.
+
+ Except as contained in this notice, the name(s) of the above copyright holders
+ shall not be used in advertising or otherwise to promote the sale, use or other
+ dealings in this Software without prior written authorization.
+
+ 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.
+*/
+
+#include "resource.h"
+#include "head.h"
+
+HMODULE hModule;
+FILE* hLog;
+BOOL console = FALSE;
+BOOL wow64 = FALSE;
+int foundJava = NO_JAVA_FOUND;
+
+struct _stat statBuf;
+PROCESS_INFORMATION pi;
+DWORD priority;
+
+char mutexName[STR] = {0};
+
+char errUrl[256] = {0};
+char errTitle[STR] = "Launch4j";
+char errMsg[BIG_STR] = {0};
+
+char javaMinVer[STR] = {0};
+char javaMaxVer[STR] = {0};
+char foundJavaVer[STR] = {0};
+char foundJavaKey[_MAX_PATH] = {0};
+
+char oldPwd[_MAX_PATH] = {0};
+char workingDir[_MAX_PATH] = {0};
+char cmd[_MAX_PATH] = {0};
+char args[MAX_ARGS] = {0};
+
+FILE* openLogFile(const char* exePath, const int pathLen) {
+ char path[_MAX_PATH] = {0};
+ strncpy(path, exePath, pathLen);
+ strcat(path, "\\launch4j.log");
+ return fopen(path, "a");
+}
+
+void closeLogFile() {
+ if (hLog != NULL) {
+ fclose(hLog);
+ }
+}
+
+void setWow64Flag() {
+ LPFN_ISWOW64PROCESS fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(
+ GetModuleHandle(TEXT("kernel32")), "IsWow64Process");
+
+ if (fnIsWow64Process != NULL) {
+ fnIsWow64Process(GetCurrentProcess(), &wow64);
+ }
+ debug("WOW64:\t\t%s\n", wow64 ? "yes" : "no");
+}
+
+void setConsoleFlag() {
+ console = TRUE;
+}
+
+void msgBox(const char* text) {
+ if (console) {
+ printf("%s: %s\n", errTitle, text);
+ } else {
+ MessageBox(NULL, text, errTitle, MB_OK);
+ }
+}
+
+void signalError() {
+ DWORD err = GetLastError();
+ if (err) {
+ LPVOID lpMsgBuf;
+ FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER
+ | FORMAT_MESSAGE_FROM_SYSTEM
+ | FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL,
+ err,
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
+ (LPTSTR) &lpMsgBuf,
+ 0,
+ NULL);
+ debug("Error:\t\t%s\n", (LPCTSTR) lpMsgBuf);
+ strcat(errMsg, "\n\n");
+ strcat(errMsg, (LPCTSTR) lpMsgBuf);
+ msgBox(errMsg);
+ LocalFree(lpMsgBuf);
+ } else {
+ msgBox(errMsg);
+ }
+ if (*errUrl) {
+ debug("Open URL:\t%s\n", errUrl);
+ ShellExecute(NULL, "open", errUrl, NULL, NULL, SW_SHOWNORMAL);
+ }
+ closeLogFile();
+}
+
+BOOL loadString(const int resID, char* buffer) {
+ HRSRC hResource;
+ HGLOBAL hResourceLoaded;
+ LPBYTE lpBuffer;
+
+ hResource = FindResourceEx(hModule, RT_RCDATA, MAKEINTRESOURCE(resID),
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT));
+ if (NULL != hResource) {
+ hResourceLoaded = LoadResource(hModule, hResource);
+ if (NULL != hResourceLoaded) {
+ lpBuffer = (LPBYTE) LockResource(hResourceLoaded);
+ if (NULL != lpBuffer) {
+ int x = 0;
+ do {
+ buffer[x] = (char) lpBuffer[x];
+ } while (buffer[x++] != 0);
+ // debug("Resource %d:\t%s\n", resID, buffer);
+ return TRUE;
+ }
+ }
+ } else {
+ SetLastError(0);
+ }
+ return FALSE;
+}
+
+BOOL loadBool(const int resID) {
+ char boolStr[20] = {0};
+ loadString(resID, boolStr);
+ return strcmp(boolStr, TRUE_STR) == 0;
+}
+
+int loadInt(const int resID) {
+ char intStr[20] = {0};
+ loadString(resID, intStr);
+ return atoi(intStr);
+}
+
+BOOL regQueryValue(const char* regPath, unsigned char* buffer,
+ unsigned long bufferLength) {
+ HKEY hRootKey;
+ char* key;
+ char* value;
+ if (strstr(regPath, HKEY_CLASSES_ROOT_STR) == regPath) {
+ hRootKey = HKEY_CLASSES_ROOT;
+ } else if (strstr(regPath, HKEY_CURRENT_USER_STR) == regPath) {
+ hRootKey = HKEY_CURRENT_USER;
+ } else if (strstr(regPath, HKEY_LOCAL_MACHINE_STR) == regPath) {
+ hRootKey = HKEY_LOCAL_MACHINE;
+ } else if (strstr(regPath, HKEY_USERS_STR) == regPath) {
+ hRootKey = HKEY_USERS;
+ } else if (strstr(regPath, HKEY_CURRENT_CONFIG_STR) == regPath) {
+ hRootKey = HKEY_CURRENT_CONFIG;
+ } else {
+ return FALSE;
+ }
+ key = strchr(regPath, '\\') + 1;
+ value = strrchr(regPath, '\\') + 1;
+ *(value - 1) = 0;
+
+ HKEY hKey;
+ unsigned long datatype;
+ BOOL result = FALSE;
+ if ((wow64 && RegOpenKeyEx(hRootKey,
+ key,
+ 0,
+ KEY_READ | KEY_WOW64_64KEY,
+ &hKey) == ERROR_SUCCESS)
+ || RegOpenKeyEx(hRootKey,
+ key,
+ 0,
+ KEY_READ,
+ &hKey) == ERROR_SUCCESS) {
+ result = RegQueryValueEx(hKey, value, NULL, &datatype, buffer, &bufferLength)
+ == ERROR_SUCCESS;
+ RegCloseKey(hKey);
+ }
+ *(value - 1) = '\\';
+ return result;
+}
+
+void regSearch(const HKEY hKey, const char* keyName, const int searchType) {
+ DWORD x = 0;
+ unsigned long size = BIG_STR;
+ FILETIME time;
+ char buffer[BIG_STR] = {0};
+ while (RegEnumKeyEx(
+ hKey, // handle to key to enumerate
+ x++, // index of subkey to enumerate
+ buffer, // address of buffer for subkey name
+ &size, // address for size of subkey buffer
+ NULL, // reserved
+ NULL, // address of buffer for class string
+ NULL, // address for size of class buffer
+ &time) == ERROR_SUCCESS) {
+
+ if (strcmp(buffer, javaMinVer) >= 0
+ && (!*javaMaxVer || strcmp(buffer, javaMaxVer) <= 0)
+ && strcmp(buffer, foundJavaVer) > 0) {
+ strcpy(foundJavaVer, buffer);
+ strcpy(foundJavaKey, keyName);
+ appendPath(foundJavaKey, buffer);
+ foundJava = searchType;
+ debug("Match:\t\t%s\\%s\n", keyName, buffer);
+ } else {
+ debug("Ignore:\t\t%s\\%s\n", keyName, buffer);
+ }
+ size = BIG_STR;
+ }
+}
+
+void regSearchWow(const char* keyName, const int searchType) {
+ HKEY hKey;
+ debug("64-bit search:\t%s...\n", keyName);
+ if (wow64 && RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+ keyName,
+ 0,
+ KEY_READ | KEY_WOW64_64KEY,
+ &hKey) == ERROR_SUCCESS) {
+
+ regSearch(hKey, keyName, searchType | KEY_WOW64_64KEY);
+ RegCloseKey(hKey);
+ if ((foundJava & KEY_WOW64_64KEY) != NO_JAVA_FOUND)
+ {
+ debug("Using 64-bit runtime.\n");
+ return;
+ }
+ }
+ debug("32-bit search:\t%s...\n", keyName);
+ if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+ keyName,
+ 0,
+ KEY_READ,
+ &hKey) == ERROR_SUCCESS) {
+ regSearch(hKey, keyName, searchType);
+ RegCloseKey(hKey);
+ }
+}
+
+void regSearchJreSdk(const char* jreKeyName, const char* sdkKeyName,
+ const int jdkPreference) {
+ if (jdkPreference == JDK_ONLY || jdkPreference == PREFER_JDK) {
+ regSearchWow(sdkKeyName, FOUND_SDK);
+ if (jdkPreference != JDK_ONLY) {
+ regSearchWow(jreKeyName, FOUND_JRE);
+ }
+ } else { // jdkPreference == JRE_ONLY or PREFER_JRE
+ regSearchWow(jreKeyName, FOUND_JRE);
+ if (jdkPreference != JRE_ONLY) {
+ regSearchWow(sdkKeyName, FOUND_SDK);
+ }
+ }
+}
+
+BOOL findJavaHome(char* path, const int jdkPreference) {
+ regSearchJreSdk("SOFTWARE\\JavaSoft\\Java Runtime Environment",
+ "SOFTWARE\\JavaSoft\\Java Development Kit",
+ jdkPreference);
+ if (foundJava == NO_JAVA_FOUND) {
+ regSearchJreSdk("SOFTWARE\\IBM\\Java2 Runtime Environment",
+ "SOFTWARE\\IBM\\Java Development Kit",
+ jdkPreference);
+ }
+ if (foundJava != NO_JAVA_FOUND) {
+ HKEY hKey;
+ if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+ foundJavaKey,
+ 0,
+ KEY_READ | (foundJava & KEY_WOW64_64KEY),
+ &hKey) == ERROR_SUCCESS) {
+ unsigned char buffer[BIG_STR] = {0};
+ unsigned long bufferlength = BIG_STR;
+ unsigned long datatype;
+ if (RegQueryValueEx(hKey, "JavaHome", NULL, &datatype, buffer,
+ &bufferlength) == ERROR_SUCCESS) {
+ int i = 0;
+ do {
+ path[i] = buffer[i];
+ } while (path[i++] != 0);
+ // (foundJava & FOUND_SDK) { // removed by fry
+ // appendPath(path, "jre");
+ //
+ RegCloseKey(hKey);
+ return TRUE;
+ }
+ RegCloseKey(hKey);
+ }
+ }
+ return FALSE;
+}
+
+/*
+ * Extract the executable name, returns path length.
+ */
+int getExePath(char* exePath) {
+ if (GetModuleFileName(hModule, exePath, _MAX_PATH) == 0) {
+ return -1;
+ }
+ return strrchr(exePath, '\\') - exePath;
+}
+
+void appendPath(char* basepath, const char* path) {
+ if (basepath[strlen(basepath) - 1] != '\\') {
+ strcat(basepath, "\\");
+ }
+ strcat(basepath, path);
+}
+
+void appendJavaw(char* jrePath) {
+ if (console) {
+ appendPath(jrePath, "bin\\java.exe");
+ } else {
+ appendPath(jrePath, "bin\\javaw.exe");
+ }
+}
+
+void appendLauncher(const BOOL setProcName, char* exePath,
+ const int pathLen, char* cmd) {
+ if (setProcName) {
+ char tmpspec[_MAX_PATH];
+ char tmpfile[_MAX_PATH];
+ strcpy(tmpspec, cmd);
+ strcat(tmpspec, LAUNCH4J_TMP_DIR);
+ tmpspec[strlen(tmpspec) - 1] = 0;
+ if (_stat(tmpspec, &statBuf) == 0) {
+ // Remove temp launchers and manifests
+ struct _finddata_t c_file;
+ long hFile;
+ appendPath(tmpspec, "*.exe");
+ strcpy(tmpfile, cmd);
+ strcat(tmpfile, LAUNCH4J_TMP_DIR);
+ char* filename = tmpfile + strlen(tmpfile);
+ if ((hFile = _findfirst(tmpspec, &c_file)) != -1L) {
+ do {
+ strcpy(filename, c_file.name);
+ debug("Unlink:\t\t%s\n", tmpfile);
+ _unlink(tmpfile);
+ strcat(tmpfile, MANIFEST);
+ debug("Unlink:\t\t%s\n", tmpfile);
+ _unlink(tmpfile);
+ } while (_findnext(hFile, &c_file) == 0);
+ }
+ _findclose(hFile);
+ } else {
+ if (_mkdir(tmpspec) != 0) {
+ debug("Mkdir failed:\t%s\n", tmpspec);
+ appendJavaw(cmd);
+ return;
+ }
+ }
+ char javaw[_MAX_PATH];
+ strcpy(javaw, cmd);
+ appendJavaw(javaw);
+ strcpy(tmpfile, cmd);
+ strcat(tmpfile, LAUNCH4J_TMP_DIR);
+ char* tmpfilename = tmpfile + strlen(tmpfile);
+ char* exeFilePart = exePath + pathLen + 1;
+
+ // Copy manifest
+ char manifest[_MAX_PATH] = {0};
+ strcpy(manifest, exePath);
+ strcat(manifest, MANIFEST);
+ if (_stat(manifest, &statBuf) == 0) {
+ strcat(tmpfile, exeFilePart);
+ strcat(tmpfile, MANIFEST);
+ debug("Copy:\t\t%s -> %s\n", manifest, tmpfile);
+ CopyFile(manifest, tmpfile, FALSE);
+ }
+
+ // Copy launcher
+ strcpy(tmpfilename, exeFilePart);
+ debug("Copy:\t\t%s -> %s\n", javaw, tmpfile);
+ if (CopyFile(javaw, tmpfile, FALSE)) {
+ strcpy(cmd, tmpfile);
+ return;
+ } else if (_stat(javaw, &statBuf) == 0) {
+ long fs = statBuf.st_size;
+ if (_stat(tmpfile, &statBuf) == 0 && fs == statBuf.st_size) {
+ debug("Reusing:\t\t%s\n", tmpfile);
+ strcpy(cmd, tmpfile);
+ return;
+ }
+ }
+ }
+ appendJavaw(cmd);
+}
+
+void appendAppClasspath(char* dst, const char* src, const char* classpath) {
+ strcat(dst, src);
+ if (*classpath) {
+ strcat(dst, ";");
+ }
+}
+
+BOOL isJrePathOk(const char* path) {
+ char javaw[_MAX_PATH];
+ BOOL result = FALSE;
+ if (*path) {
+ strcpy(javaw, path);
+ appendJavaw(javaw);
+ result = _stat(javaw, &statBuf) == 0;
+ }
+ debug("Check launcher:\t%s %s\n", javaw, result ? "(OK)" : "(n/a)");
+ return result;
+}
+
+/*
+ * Expand environment %variables%
+ */
+BOOL expandVars(char *dst, const char *src, const char *exePath, const int pathLen) {
+ char varName[STR];
+ char varValue[MAX_VAR_SIZE];
+ while (strlen(src) > 0) {
+ char *start = strchr(src, '%');
+ if (start != NULL) {
+ char *end = strchr(start + 1, '%');
+ if (end == NULL) {
+ return FALSE;
+ }
+ // Copy content up to %VAR%
+ strncat(dst, src, start - src);
+ // Insert value of %VAR%
+ *varName = 0;
+ strncat(varName, start + 1, end - start - 1);
+ // Remember value start for logging
+ char *varValue = dst + strlen(dst);
+ if (strcmp(varName, "EXEDIR") == 0) {
+ strncat(dst, exePath, pathLen);
+ } else if (strcmp(varName, "EXEFILE") == 0) {
+ strcat(dst, exePath);
+ } else if (strcmp(varName, "PWD") == 0) {
+ GetCurrentDirectory(_MAX_PATH, dst + strlen(dst));
+ } else if (strcmp(varName, "OLDPWD") == 0) {
+ strcat(dst, oldPwd);
+ } else if (strstr(varName, HKEY_STR) == varName) {
+ regQueryValue(varName, dst + strlen(dst), BIG_STR);
+ } else if (GetEnvironmentVariable(varName, varValue, MAX_VAR_SIZE) > 0) {
+ strcat(dst, varValue);
+ }
+ debug("Substitute:\t%s = %s\n", varName, varValue);
+ src = end + 1;
+ } else {
+ // Copy remaining content
+ strcat(dst, src);
+ break;
+ }
+ }
+ return TRUE;
+}
+
+void appendHeapSizes(char *dst) {
+ MEMORYSTATUS m;
+ memset(&m, 0, sizeof(m));
+ GlobalMemoryStatus(&m);
+
+ appendHeapSize(dst, INITIAL_HEAP_SIZE, INITIAL_HEAP_PERCENT,
+ m.dwAvailPhys, "-Xms");
+ appendHeapSize(dst, MAX_HEAP_SIZE, MAX_HEAP_PERCENT,
+ m.dwAvailPhys, "-Xmx");
+}
+
+void appendHeapSize(char *dst, const int absID, const int percentID,
+ const DWORD freeMemory, const char *option) {
+
+ const int mb = 1048576; // 1 MB
+ int abs = loadInt(absID);
+ int percent = loadInt(percentID);
+ int free = (long long) freeMemory * percent / (100 * mb); // 100% * 1 MB
+ int size = free > abs ? free : abs;
+ if (size > 0) {
+ debug("Heap %s:\t%d MB / %d%%, Free: %d MB, Heap size: %d MB\n",
+ option, abs, percent, freeMemory / mb, size);
+ strcat(dst, option);
+ _itoa(size, dst + strlen(dst), 10); // 10 -- radix
+ strcat(dst, "m ");
+ }
+}
+
+int prepare(const char *lpCmdLine) {
+ char tmp[MAX_ARGS] = {0};
+ hModule = GetModuleHandle(NULL);
+ if (hModule == NULL) {
+ return FALSE;
+ }
+
+ // Get executable path
+ char exePath[_MAX_PATH] = {0};
+ int pathLen = getExePath(exePath);
+ if (pathLen == -1) {
+ return FALSE;
+ }
+
+ // Initialize logging
+ if (strstr(lpCmdLine, "--l4j-debug") != NULL) {
+ hLog = openLogFile(exePath, pathLen);
+ if (hLog == NULL) {
+ return FALSE;
+ }
+ debug("\n\nCmdLine:\t%s %s\n", exePath, lpCmdLine);
+ }
+
+ setWow64Flag();
+
+ // Set default error message, title and optional support web site url.
+ loadString(SUPPORT_URL, errUrl);
+ loadString(ERR_TITLE, errTitle);
+ if (!loadString(STARTUP_ERR, errMsg)) {
+ return FALSE;
+ }
+
+ // Single instance
+ loadString(MUTEX_NAME, mutexName);
+ if (*mutexName) {
+ SECURITY_ATTRIBUTES security;
+ security.nLength = sizeof(SECURITY_ATTRIBUTES);
+ security.bInheritHandle = TRUE;
+ security.lpSecurityDescriptor = NULL;
+ CreateMutexA(&security, FALSE, mutexName);
+ if (GetLastError() == ERROR_ALREADY_EXISTS) {
+ debug("Instance already exists.");
+ return ERROR_ALREADY_EXISTS;
+ }
+ }
+
+ // Working dir
+ char tmp_path[_MAX_PATH] = {0};
+ GetCurrentDirectory(_MAX_PATH, oldPwd);
+ if (loadString(CHDIR, tmp_path)) {
+ strncpy(workingDir, exePath, pathLen);
+ appendPath(workingDir, tmp_path);
+ _chdir(workingDir);
+ debug("Working dir:\t%s\n", workingDir);
+ }
+
+ // Use bundled jre or find java
+ if (loadString(JRE_PATH, tmp_path)) {
+ char jrePath[MAX_ARGS] = {0};
+ expandVars(jrePath, tmp_path, exePath, pathLen);
+ debug("Bundled JRE:\t%s\n", jrePath);
+ if (jrePath[0] == '\\' || jrePath[1] == ':') {
+ // Absolute
+ strcpy(cmd, jrePath);
+ } else {
+ // Relative
+ strncpy(cmd, exePath, pathLen);
+ appendPath(cmd, jrePath);
+ }
+ }
+ if (!isJrePathOk(cmd)) {
+ if (!loadString(JAVA_MIN_VER, javaMinVer)) {
+ loadString(BUNDLED_JRE_ERR, errMsg);
+ return FALSE;
+ }
+ loadString(JAVA_MAX_VER, javaMaxVer);
+ if (!findJavaHome(cmd, loadInt(JDK_PREFERENCE))) {
+ loadString(JRE_VERSION_ERR, errMsg);
+ strcat(errMsg, " ");
+ strcat(errMsg, javaMinVer);
+ if (*javaMaxVer) {
+ strcat(errMsg, " - ");
+ strcat(errMsg, javaMaxVer);
+ }
+ loadString(DOWNLOAD_URL, errUrl);
+ return FALSE;
+ }
+ if (!isJrePathOk(cmd)) {
+ loadString(LAUNCHER_ERR, errMsg);
+ return FALSE;
+ }
+ }
+
+ // Append a path to the Path environment variable
+ char jreBinPath[_MAX_PATH];
+ strcpy(jreBinPath, cmd);
+ strcat(jreBinPath, "\\bin");
+ if (!appendToPathVar(jreBinPath)) {
+ return FALSE;
+ }
+
+ // Set environment variables
+ char envVars[MAX_VAR_SIZE] = {0};
+ loadString(ENV_VARIABLES, envVars);
+ char *var = strtok(envVars, "\t");
+ while (var != NULL) {
+ char *varValue = strchr(var, '=');
+ *varValue++ = 0;
+ *tmp = 0;
+ expandVars(tmp, varValue, exePath, pathLen);
+ debug("Set var:\t%s = %s\n", var, tmp);
+ SetEnvironmentVariable(var, tmp);
+ var = strtok(NULL, "\t");
+ }
+ *tmp = 0;
+
+ // Process priority
+ priority = loadInt(PRIORITY_CLASS);
+
+ // Custom process name
+ const BOOL setProcName = loadBool(SET_PROC_NAME)
+ && strstr(lpCmdLine, "--l4j-default-proc") == NULL;
+ const BOOL wrapper = loadBool(WRAPPER);
+
+ char jdk_path[_MAX_PATH] = {0}; // fry
+ strcpy(jdk_path, cmd);
+ //msgBox(jdk_path);
+
+ appendLauncher(setProcName, exePath, pathLen, cmd);
+
+ // Heap sizes
+ appendHeapSizes(args);
+
+ // JVM options
+ if (loadString(JVM_OPTIONS, tmp)) {
+ strcat(tmp, " ");
+ } else {
+ *tmp = 0;
+ }
+ /*
+ * Load additional JVM options from .l4j.ini file
+ * Options are separated by spaces or CRLF
+ * # starts an inline comment
+ */
+ strncpy(tmp_path, exePath, strlen(exePath) - 3);
+ strcat(tmp_path, "l4j.ini");
+ long hFile;
+ if ((hFile = _open(tmp_path, _O_RDONLY)) != -1) {
+ const int jvmOptLen = strlen(tmp);
+ char* src = tmp + jvmOptLen;
+ char* dst = src;
+ const int len = _read(hFile, src, MAX_ARGS - jvmOptLen - BIG_STR);
+ BOOL copy = TRUE;
+ int i;
+ for (i = 0; i < len; i++, src++) {
+ if (*src == '#') {
+ copy = FALSE;
+ } else if (*src == 13 || *src == 10) {
+ copy = TRUE;
+ if (dst > tmp && *(dst - 1) != ' ') {
+ *dst++ = ' ';
+ }
+ } else if (copy) {
+ *dst++ = *src;
+ }
+ }
+ *dst = 0;
+ if (len > 0 && *(dst - 1) != ' ') {
+ strcat(tmp, " ");
+ }
+ _close(hFile);
+ }
+
+ // Expand environment %variables%
+ expandVars(args, tmp, exePath, pathLen);
+
+ // MainClass + Classpath or Jar
+ char mainClass[STR] = {0};
+ char jar[_MAX_PATH] = {0};
+ loadString(JAR, jar);
+ if (loadString(MAIN_CLASS, mainClass)) {
+ if (!loadString(CLASSPATH, tmp)) {
+ return FALSE;
+ }
+ char exp[MAX_ARGS] = {0};
+ expandVars(exp, tmp, exePath, pathLen);
+ strcat(args, "-classpath \"");
+ if (wrapper) {
+ appendAppClasspath(args, exePath, exp);
+ } else if (*jar) {
+ appendAppClasspath(args, jar, exp);
+ }
+
+ // add tools.jar for JDK [fry]
+ char tools[_MAX_PATH] = { 0 };
+ sprintf(tools, "%s\\lib\\tools.jar", jdk_path);
+ appendAppClasspath(args, tools, exp);
+
+ // Deal with wildcards or >> strcat(args, exp); <<
+ char* cp = strtok(exp, ";");
+ while(cp != NULL) {
+ debug("Add classpath:\t%s\n", cp);
+ if (strpbrk(cp, "*?") != NULL) {
+ int len = strrchr(cp, '\\') - cp + 1;
+ strncpy(tmp_path, cp, len);
+ char* filename = tmp_path + len;
+ *filename = 0;
+ struct _finddata_t c_file;
+ long hFile;
+ if ((hFile = _findfirst(cp, &c_file)) != -1L) {
+ do {
+ strcpy(filename, c_file.name);
+ strcat(args, tmp_path);
+ strcat(args, ";");
+ debug(" \" :\t%s\n", tmp_path);
+ } while (_findnext(hFile, &c_file) == 0);
+ }
+ _findclose(hFile);
+ } else {
+ strcat(args, cp);
+ strcat(args, ";");
+ }
+ cp = strtok(NULL, ";");
+ }
+ *(args + strlen(args) - 1) = 0;
+
+ strcat(args, "\" ");
+ strcat(args, mainClass);
+ } else if (wrapper) {
+ strcat(args, "-jar \"");
+ strcat(args, exePath);
+ strcat(args, "\"");
+ } else {
+ strcat(args, "-jar \"");
+ strncat(args, exePath, pathLen);
+ appendPath(args, jar);
+ strcat(args, "\"");
+ }
+
+ // Constant command line args
+ if (loadString(CMD_LINE, tmp)) {
+ strcat(args, " ");
+ strcat(args, tmp);
+ }
+
+ // Command line args
+ if (*lpCmdLine) {
+ strcpy(tmp, lpCmdLine);
+ char* dst;
+ while ((dst = strstr(tmp, "--l4j-")) != NULL) {
+ char* src = strchr(dst, ' ');
+ if (src == NULL || *(src + 1) == 0) {
+ *dst = 0;
+ } else {
+ strcpy(dst, src + 1);
+ }
+ }
+ if (*tmp) {
+ strcat(args, " ");
+ strcat(args, tmp);
+ }
+ }
+
+ debug("Launcher:\t%s\n", cmd);
+ debug("Launcher args:\t%s\n", args);
+ debug("Args length:\t%d/32768 chars\n", strlen(args));
+ return TRUE;
+}
+
+void closeHandles() {
+ CloseHandle(pi.hThread);
+ CloseHandle(pi.hProcess);
+ closeLogFile();
+}
+
+/*
+ * Append a path to the Path environment variable
+ */
+BOOL appendToPathVar(const char* path) {
+ char chBuf[MAX_VAR_SIZE] = {0};
+
+ const int pathSize = GetEnvironmentVariable("Path", chBuf, MAX_VAR_SIZE);
+ if (MAX_VAR_SIZE - pathSize - 1 < strlen(path)) {
+ return FALSE;
+ }
+ strcat(chBuf, ";");
+ strcat(chBuf, path);
+ return SetEnvironmentVariable("Path", chBuf);
+}
+
+// may need to ignore STILL_ACTIVE (error code 259) here
+// http://msdn.microsoft.com/en-us/library/ms683189(VS.85).aspx
+DWORD execute(const BOOL wait) {
+ STARTUPINFO si;
+ memset(&pi, 0, sizeof(pi));
+ memset(&si, 0, sizeof(si));
+ si.cb = sizeof(si);
+
+ DWORD dwExitCode = -1;
+ char cmdline[MAX_ARGS];
+ strcpy(cmdline, "\"");
+ strcat(cmdline, cmd);
+ strcat(cmdline, "\" ");
+ strcat(cmdline, args);
+ if (CreateProcess(NULL, cmdline, NULL, NULL,
+ TRUE, priority, NULL, NULL, &si, &pi)) {
+ if (wait) {
+ WaitForSingleObject(pi.hProcess, INFINITE);
+ GetExitCodeProcess(pi.hProcess, &dwExitCode);
+ debug("Exit code:\t%d\n", dwExitCode);
+ closeHandles();
+ } else {
+ dwExitCode = 0;
+ }
+ }
+ return dwExitCode;
+}
diff --git a/build/windows/launcher/launch4j/head_src/head.h b/build/windows/launcher/launch4j/head_src/head.h
old mode 100755
new mode 100644
index 2e3bdb1d093..5e9e577c74a
--- a/build/windows/launcher/launch4j/head_src/head.h
+++ b/build/windows/launcher/launch4j/head_src/head.h
@@ -1,113 +1,113 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2008 Grzegorz Kowal,
- Ian Roberts (jdk preference patch)
-
- 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.
-
- Except as contained in this notice, the name(s) of the above copyright holders
- shall not be used in advertising or otherwise to promote the sale, use or other
- dealings in this Software without prior written authorization.
-
- 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.
-*/
-
-#ifndef _LAUNCH4J_HEAD__INCLUDED_
-#define _LAUNCH4J_HEAD__INCLUDED_
-
-#define WIN32_LEAN_AND_MEAN // VC - Exclude rarely-used stuff from Windows headers
-
-// Windows Header Files:
-#include
-
-// C RunTime Header Files
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#define NO_JAVA_FOUND 0
-#define FOUND_JRE 1
-#define FOUND_SDK 2
-
-#define JRE_ONLY 0
-#define PREFER_JRE 1
-#define PREFER_JDK 2
-#define JDK_ONLY 3
-
-#define LAUNCH4J_TMP_DIR "\\launch4j-tmp\\"
-#define MANIFEST ".manifest"
-
-#define KEY_WOW64_64KEY 0x0100
-
-#define HKEY_STR "HKEY"
-#define HKEY_CLASSES_ROOT_STR "HKEY_CLASSES_ROOT"
-#define HKEY_CURRENT_USER_STR "HKEY_CURRENT_USER"
-#define HKEY_LOCAL_MACHINE_STR "HKEY_LOCAL_MACHINE"
-#define HKEY_USERS_STR "HKEY_USERS"
-#define HKEY_CURRENT_CONFIG_STR "HKEY_CURRENT_CONFIG"
-
-#define STR 128
-#define BIG_STR 1024
-#define MAX_VAR_SIZE 32767
-#define MAX_ARGS 32768
-
-#define TRUE_STR "true"
-#define FALSE_STR "false"
-
-#define debug(args...) if (hLog != NULL) fprintf(hLog, ## args);
-
-typedef void (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
-
-FILE* openLogFile(const char* exePath, const int pathLen);
-void closeLogFile();
-void msgBox(const char* text);
-void signalError();
-BOOL loadString(const int resID, char* buffer);
-BOOL loadBool(const int resID);
-int loadInt(const int resID);
-BOOL regQueryValue(const char* regPath, unsigned char* buffer,
- unsigned long bufferLength);
-void regSearch(const HKEY hKey, const char* keyName, const int searchType);
-void regSearchWow(const char* keyName, const int searchType);
-void regSearchJreSdk(const char* jreKeyName, const char* sdkKeyName,
- const int jdkPreference);
-BOOL findJavaHome(char* path, const int jdkPreference);
-int getExePath(char* exePath);
-void appendPath(char* basepath, const char* path);
-void appendJavaw(char* jrePath);
-void appendAppClasspath(char* dst, const char* src, const char* classpath);
-BOOL isJrePathOk(const char* path);
-BOOL expandVars(char *dst, const char *src, const char *exePath, const int pathLen);
-void appendHeapSizes(char *dst);
-void appendHeapSize(char *dst, const int absID, const int percentID,
- const DWORD freeMemory, const char *option);
-int prepare(const char *lpCmdLine);
-void closeHandles();
-BOOL appendToPathVar(const char* path);
-DWORD execute(const BOOL wait);
-
-#endif // _LAUNCH4J_HEAD__INCLUDED_
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2008 Grzegorz Kowal,
+ Ian Roberts (jdk preference patch)
+
+ 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.
+
+ Except as contained in this notice, the name(s) of the above copyright holders
+ shall not be used in advertising or otherwise to promote the sale, use or other
+ dealings in this Software without prior written authorization.
+
+ 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.
+*/
+
+#ifndef _LAUNCH4J_HEAD__INCLUDED_
+#define _LAUNCH4J_HEAD__INCLUDED_
+
+#define WIN32_LEAN_AND_MEAN // VC - Exclude rarely-used stuff from Windows headers
+
+// Windows Header Files:
+#include
+
+// C RunTime Header Files
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#define NO_JAVA_FOUND 0
+#define FOUND_JRE 1
+#define FOUND_SDK 2
+
+#define JRE_ONLY 0
+#define PREFER_JRE 1
+#define PREFER_JDK 2
+#define JDK_ONLY 3
+
+#define LAUNCH4J_TMP_DIR "\\launch4j-tmp\\"
+#define MANIFEST ".manifest"
+
+#define KEY_WOW64_64KEY 0x0100
+
+#define HKEY_STR "HKEY"
+#define HKEY_CLASSES_ROOT_STR "HKEY_CLASSES_ROOT"
+#define HKEY_CURRENT_USER_STR "HKEY_CURRENT_USER"
+#define HKEY_LOCAL_MACHINE_STR "HKEY_LOCAL_MACHINE"
+#define HKEY_USERS_STR "HKEY_USERS"
+#define HKEY_CURRENT_CONFIG_STR "HKEY_CURRENT_CONFIG"
+
+#define STR 128
+#define BIG_STR 1024
+#define MAX_VAR_SIZE 32767
+#define MAX_ARGS 32768
+
+#define TRUE_STR "true"
+#define FALSE_STR "false"
+
+#define debug(args...) if (hLog != NULL) fprintf(hLog, ## args);
+
+typedef void (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
+
+FILE* openLogFile(const char* exePath, const int pathLen);
+void closeLogFile();
+void msgBox(const char* text);
+void signalError();
+BOOL loadString(const int resID, char* buffer);
+BOOL loadBool(const int resID);
+int loadInt(const int resID);
+BOOL regQueryValue(const char* regPath, unsigned char* buffer,
+ unsigned long bufferLength);
+void regSearch(const HKEY hKey, const char* keyName, const int searchType);
+void regSearchWow(const char* keyName, const int searchType);
+void regSearchJreSdk(const char* jreKeyName, const char* sdkKeyName,
+ const int jdkPreference);
+BOOL findJavaHome(char* path, const int jdkPreference);
+int getExePath(char* exePath);
+void appendPath(char* basepath, const char* path);
+void appendJavaw(char* jrePath);
+void appendAppClasspath(char* dst, const char* src, const char* classpath);
+BOOL isJrePathOk(const char* path);
+BOOL expandVars(char *dst, const char *src, const char *exePath, const int pathLen);
+void appendHeapSizes(char *dst);
+void appendHeapSize(char *dst, const int absID, const int percentID,
+ const DWORD freeMemory, const char *option);
+int prepare(const char *lpCmdLine);
+void closeHandles();
+BOOL appendToPathVar(const char* path);
+DWORD execute(const BOOL wait);
+
+#endif // _LAUNCH4J_HEAD__INCLUDED_
diff --git a/build/windows/launcher/launch4j/head_src/resource.h b/build/windows/launcher/launch4j/head_src/resource.h
old mode 100755
new mode 100644
index 3c0f73cfc0b..259d351ec93
--- a/build/windows/launcher/launch4j/head_src/resource.h
+++ b/build/windows/launcher/launch4j/head_src/resource.h
@@ -1,71 +1,71 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2008 Grzegorz Kowal
- Ian Roberts (jdk preference patch)
-
- 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.
-
- Except as contained in this notice, the name(s) of the above copyright holders
- shall not be used in advertising or otherwise to promote the sale, use or other
- dealings in this Software without prior written authorization.
-
- 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.
-*/
-
-// ICON
-#define APP_ICON 1
-
-// BITMAP
-#define SPLASH_BITMAP 1
-
-// RCDATA
-#define JRE_PATH 1
-#define JAVA_MIN_VER 2
-#define JAVA_MAX_VER 3
-#define SHOW_SPLASH 4
-#define SPLASH_WAITS_FOR_WINDOW 5
-#define SPLASH_TIMEOUT 6
-#define SPLASH_TIMEOUT_ERR 7
-#define CHDIR 8
-#define SET_PROC_NAME 9
-#define ERR_TITLE 10
-#define GUI_HEADER_STAYS_ALIVE 11
-#define JVM_OPTIONS 12
-#define CMD_LINE 13
-#define JAR 14
-#define MAIN_CLASS 15
-#define CLASSPATH 16
-#define WRAPPER 17
-#define JDK_PREFERENCE 18
-#define ENV_VARIABLES 19
-#define PRIORITY_CLASS 20
-#define DOWNLOAD_URL 21
-#define SUPPORT_URL 22
-#define MUTEX_NAME 23
-#define INSTANCE_WINDOW_TITLE 24
-#define INITIAL_HEAP_SIZE 25
-#define INITIAL_HEAP_PERCENT 26
-#define MAX_HEAP_SIZE 27
-#define MAX_HEAP_PERCENT 28
-
-#define STARTUP_ERR 101
-#define BUNDLED_JRE_ERR 102
-#define JRE_VERSION_ERR 103
-#define LAUNCHER_ERR 104
-#define INSTANCE_ALREADY_EXISTS_MSG 105
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2008 Grzegorz Kowal
+ Ian Roberts (jdk preference patch)
+
+ 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.
+
+ Except as contained in this notice, the name(s) of the above copyright holders
+ shall not be used in advertising or otherwise to promote the sale, use or other
+ dealings in this Software without prior written authorization.
+
+ 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.
+*/
+
+// ICON
+#define APP_ICON 1
+
+// BITMAP
+#define SPLASH_BITMAP 1
+
+// RCDATA
+#define JRE_PATH 1
+#define JAVA_MIN_VER 2
+#define JAVA_MAX_VER 3
+#define SHOW_SPLASH 4
+#define SPLASH_WAITS_FOR_WINDOW 5
+#define SPLASH_TIMEOUT 6
+#define SPLASH_TIMEOUT_ERR 7
+#define CHDIR 8
+#define SET_PROC_NAME 9
+#define ERR_TITLE 10
+#define GUI_HEADER_STAYS_ALIVE 11
+#define JVM_OPTIONS 12
+#define CMD_LINE 13
+#define JAR 14
+#define MAIN_CLASS 15
+#define CLASSPATH 16
+#define WRAPPER 17
+#define JDK_PREFERENCE 18
+#define ENV_VARIABLES 19
+#define PRIORITY_CLASS 20
+#define DOWNLOAD_URL 21
+#define SUPPORT_URL 22
+#define MUTEX_NAME 23
+#define INSTANCE_WINDOW_TITLE 24
+#define INITIAL_HEAP_SIZE 25
+#define INITIAL_HEAP_PERCENT 26
+#define MAX_HEAP_SIZE 27
+#define MAX_HEAP_PERCENT 28
+
+#define STARTUP_ERR 101
+#define BUNDLED_JRE_ERR 102
+#define JRE_VERSION_ERR 103
+#define LAUNCHER_ERR 104
+#define INSTANCE_ALREADY_EXISTS_MSG 105
diff --git a/build/windows/launcher/launch4j/lib/JGoodies.Forms.LICENSE.txt b/build/windows/launcher/launch4j/lib/JGoodies.Forms.LICENSE.txt
old mode 100755
new mode 100644
index 9ba2419e7fd..e04618d9d1c
--- a/build/windows/launcher/launch4j/lib/JGoodies.Forms.LICENSE.txt
+++ b/build/windows/launcher/launch4j/lib/JGoodies.Forms.LICENSE.txt
@@ -1,31 +1,31 @@
-
- The BSD License for the JGoodies Forms
- ======================================
-
-Copyright (c) 2002-2004 JGoodies Karsten Lentzsch. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- o Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- o Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- o Neither the name of JGoodies Karsten Lentzsch nor the names of
- its contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ The BSD License for the JGoodies Forms
+ ======================================
+
+Copyright (c) 2002-2004 JGoodies Karsten Lentzsch. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ o Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ o Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ o Neither the name of JGoodies Karsten Lentzsch nor the names of
+ its contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/build/windows/launcher/launch4j/lib/JGoodies.Looks.LICENSE.txt b/build/windows/launcher/launch4j/lib/JGoodies.Looks.LICENSE.txt
old mode 100755
new mode 100644
index 8bbefa2ebd6..abbc8c5777f
--- a/build/windows/launcher/launch4j/lib/JGoodies.Looks.LICENSE.txt
+++ b/build/windows/launcher/launch4j/lib/JGoodies.Looks.LICENSE.txt
@@ -1,31 +1,31 @@
-
- The BSD License for the JGoodies Looks
- ======================================
-
-Copyright (c) 2001-2007 JGoodies Karsten Lentzsch. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- o Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- o Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- o Neither the name of JGoodies Karsten Lentzsch nor the names of
- its contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ The BSD License for the JGoodies Looks
+ ======================================
+
+Copyright (c) 2001-2007 JGoodies Karsten Lentzsch. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ o Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ o Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ o Neither the name of JGoodies Karsten Lentzsch nor the names of
+ its contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/build/windows/launcher/launch4j/lib/Nuvola.Icon.Theme.LICENSE.txt b/build/windows/launcher/launch4j/lib/Nuvola.Icon.Theme.LICENSE.txt
old mode 100755
new mode 100644
index cbee875ba6d..b1e3f5a2638
--- a/build/windows/launcher/launch4j/lib/Nuvola.Icon.Theme.LICENSE.txt
+++ b/build/windows/launcher/launch4j/lib/Nuvola.Icon.Theme.LICENSE.txt
@@ -1,504 +1,504 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-not price. Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- , 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
-
-
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ , 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/build/windows/launcher/launch4j/lib/XStream.LICENSE.txt b/build/windows/launcher/launch4j/lib/XStream.LICENSE.txt
old mode 100755
new mode 100644
index 5ccad869400..4848b3e4e5d
--- a/build/windows/launcher/launch4j/lib/XStream.LICENSE.txt
+++ b/build/windows/launcher/launch4j/lib/XStream.LICENSE.txt
@@ -1,27 +1,27 @@
-(BSD Style License)
-
-Copyright (c) 2003-2004, Joe Walnes
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of
-conditions and the following disclaimer. Redistributions in binary form must reproduce
-the above copyright notice, this list of conditions and the following disclaimer in
-the documentation and/or other materials provided with the distribution.
-
-Neither the name of XStream nor the names of its contributors may be used to endorse
-or promote products derived from this software without specific prior written
-permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
-SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
-TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGE.
+(BSD Style License)
+
+Copyright (c) 2003-2004, Joe Walnes
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+Redistributions of source code must retain the above copyright notice, this list of
+conditions and the following disclaimer. Redistributions in binary form must reproduce
+the above copyright notice, this list of conditions and the following disclaimer in
+the documentation and/or other materials provided with the distribution.
+
+Neither the name of XStream nor the names of its contributors may be used to endorse
+or promote products derived from this software without specific prior written
+permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
+WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
diff --git a/build/windows/launcher/launch4j/lib/commons.LICENSE.txt b/build/windows/launcher/launch4j/lib/commons.LICENSE.txt
old mode 100755
new mode 100644
index fdb6475220a..e12244a4510
--- a/build/windows/launcher/launch4j/lib/commons.LICENSE.txt
+++ b/build/windows/launcher/launch4j/lib/commons.LICENSE.txt
@@ -1,50 +1,50 @@
-/*
-
- ============================================================================
- The Apache Software License, Version 1.1
- ============================================================================
-
- Copyright (C) @year@ The Apache Software Foundation. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modifica-
- tion, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- 3. The end-user documentation included with the redistribution, if any, must
- include the following acknowledgment: "This product includes software
- developed by the Apache Software Foundation (http://www.apache.org/)."
- Alternately, this acknowledgment may appear in the software itself, if
- and wherever such third-party acknowledgments normally appear.
-
- 4. The names "Apache Cocoon" and "Apache Software Foundation" must not be
- used to endorse or promote products derived from this software without
- prior written permission. For written permission, please contact
- apache@apache.org.
-
- 5. Products derived from this software may not be called "Apache", nor may
- "Apache" appear in their name, without prior written permission of the
- Apache Software Foundation.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
- DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- This software consists of voluntary contributions made by many individuals
- on behalf of the Apache Software Foundation and was originally created by
- Stefano Mazzocchi . For more information on the Apache
- Software Foundation, please see .
-
-*/
+/*
+
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) @year@ The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Apache Cocoon" and "Apache Software Foundation" must not be
+ used to endorse or promote products derived from this software without
+ prior written permission. For written permission, please contact
+ apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ Stefano Mazzocchi . For more information on the Apache
+ Software Foundation, please see .
+
+*/
diff --git a/build/windows/launcher/launch4j/lib/foxtrot.LICENSE.txt b/build/windows/launcher/launch4j/lib/foxtrot.LICENSE.txt
old mode 100755
new mode 100644
index 5fa4019d5bf..49e0c5a5182
--- a/build/windows/launcher/launch4j/lib/foxtrot.LICENSE.txt
+++ b/build/windows/launcher/launch4j/lib/foxtrot.LICENSE.txt
@@ -1,25 +1,25 @@
-Copyright (c) 2002, Simone Bordet & Marco Cravero
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
-
- - Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- - Neither the name of Foxtrot nor the names of the contributors may be used
- to endorse or promote products derived from this software without specific prior
- written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS
-OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
-OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
-THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+Copyright (c) 2002, Simone Bordet & Marco Cravero
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met:
+
+ - Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ - Neither the name of Foxtrot nor the names of the contributors may be used
+ to endorse or promote products derived from this software without specific prior
+ written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/build/windows/launcher/launch4j/manifest/uac.exe.manifest b/build/windows/launcher/launch4j/manifest/uac.exe.manifest
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/manifest/xp-themes.exe.manifest b/build/windows/launcher/launch4j/manifest/xp-themes.exe.manifest
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/src/images/asterix-o.gif b/build/windows/launcher/launch4j/src/images/asterix-o.gif
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/src/images/asterix.gif b/build/windows/launcher/launch4j/src/images/asterix.gif
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/src/images/build.png b/build/windows/launcher/launch4j/src/images/build.png
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/src/images/button_ok.png b/build/windows/launcher/launch4j/src/images/button_ok.png
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/src/images/cancel16.png b/build/windows/launcher/launch4j/src/images/cancel16.png
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/src/images/down16.png b/build/windows/launcher/launch4j/src/images/down16.png
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/src/images/edit_add16.png b/build/windows/launcher/launch4j/src/images/edit_add16.png
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/src/images/info.png b/build/windows/launcher/launch4j/src/images/info.png
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/src/images/new.png b/build/windows/launcher/launch4j/src/images/new.png
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/src/images/new16.png b/build/windows/launcher/launch4j/src/images/new16.png
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/src/images/ok16.png b/build/windows/launcher/launch4j/src/images/ok16.png
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/src/images/open.png b/build/windows/launcher/launch4j/src/images/open.png
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/src/images/open16.png b/build/windows/launcher/launch4j/src/images/open16.png
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/src/images/run.png b/build/windows/launcher/launch4j/src/images/run.png
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/src/images/save.png b/build/windows/launcher/launch4j/src/images/save.png
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/src/images/up16.png b/build/windows/launcher/launch4j/src/images/up16.png
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/src/launch4j.properties b/build/windows/launcher/launch4j/src/launch4j.properties
old mode 100755
new mode 100644
index 463c7a034af..7a64c71e7c6
--- a/build/windows/launcher/launch4j/src/launch4j.properties
+++ b/build/windows/launcher/launch4j/src/launch4j.properties
@@ -1,2 +1,2 @@
-versionNumber=3.0.1.0
-version=3.0.1
+versionNumber=3.0.1.0
+version=3.0.1
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/Builder.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/Builder.java
old mode 100755
new mode 100644
index d7badc7f3e4..2fb4d3410b0
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/Builder.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/Builder.java
@@ -1,207 +1,207 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on 2005-04-24
- */
-package net.sf.launch4j;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import net.sf.launch4j.binding.InvariantViolationException;
-import net.sf.launch4j.config.Config;
-import net.sf.launch4j.config.ConfigPersister;
-
-/**
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public class Builder {
- private final Log _log;
- private final File _basedir;
-
- public Builder(Log log) {
- _log = log;
- _basedir = Util.getJarBasedir();
- }
-
- public Builder(Log log, File basedir) {
- _log = log;
- _basedir = basedir;
- }
-
- /**
- * @return Output file path.
- */
- public File build() throws BuilderException {
- final Config c = ConfigPersister.getInstance().getConfig();
- try {
- c.validate();
- } catch (InvariantViolationException e) {
- throw new BuilderException(e.getMessage());
- }
- File rc = null;
- File ro = null;
- File outfile = null;
- FileInputStream is = null;
- FileOutputStream os = null;
- final RcBuilder rcb = new RcBuilder();
- try {
- rc = rcb.build(c);
- ro = Util.createTempFile("o");
- outfile = ConfigPersister.getInstance().getOutputFile();
-
- Cmd resCmd = new Cmd(_basedir);
- resCmd.addExe("windres")
- .add(Util.WINDOWS_OS ? "--preprocessor=type" : "--preprocessor=cat")
- .add("-J rc -O coff -F pe-i386")
- .addAbsFile(rc)
- .addAbsFile(ro);
- _log.append(Messages.getString("Builder.compiling.resources"));
- resCmd.exec(_log);
-
- Cmd ldCmd = new Cmd(_basedir);
- ldCmd.addExe("ld")
- .add("-mi386pe")
- .add("--oformat pei-i386")
- .add((c.getHeaderType().equals(Config.GUI_HEADER))
- ? "--subsystem windows" : "--subsystem console")
- .add("-s") // strip symbols
- .addFiles(c.getHeaderObjects())
- .addAbsFile(ro)
- .addFiles(c.getLibs())
- .add("-o")
- .addAbsFile(outfile);
- _log.append(Messages.getString("Builder.linking"));
- ldCmd.exec(_log);
-
- if (!c.isDontWrapJar()) {
- _log.append(Messages.getString("Builder.wrapping"));
- int len;
- byte[] buffer = new byte[1024];
- is = new FileInputStream(Util.getAbsoluteFile(
- ConfigPersister.getInstance().getConfigPath(), c.getJar()));
- os = new FileOutputStream(outfile, true);
- while ((len = is.read(buffer)) > 0) {
- os.write(buffer, 0, len);
- }
- }
- _log.append(Messages.getString("Builder.success") + outfile.getPath());
- return outfile;
- } catch (IOException e) {
- Util.delete(outfile);
- _log.append(e.getMessage());
- throw new BuilderException(e);
- } catch (ExecException e) {
- Util.delete(outfile);
- String msg = e.getMessage();
- if (msg != null && msg.indexOf("windres") != -1) {
- if (e.getErrLine() != -1) {
- _log.append(Messages.getString("Builder.line.has.errors",
- String.valueOf(e.getErrLine())));
- _log.append(rcb.getLine(e.getErrLine()));
- } else {
- _log.append(Messages.getString("Builder.generated.resource.file"));
- _log.append(rcb.getContent());
- }
- }
- throw new BuilderException(e);
- } finally {
- Util.close(is);
- Util.close(os);
- Util.delete(rc);
- Util.delete(ro);
- }
- }
-}
-
-class Cmd {
- private final List _cmd = new ArrayList();
- private final File _basedir;
- private final File _bindir;
-
- public Cmd(File basedir) {
- _basedir = basedir;
- String path = System.getProperty("launch4j.bindir");
- if (path == null) {
- _bindir = new File(basedir, "bin");
- } else {
- File bindir = new File(path);
- _bindir = bindir.isAbsolute() ? bindir : new File(basedir, path);
- }
- }
-
- public Cmd add(String s) {
- StringTokenizer st = new StringTokenizer(s);
- while (st.hasMoreTokens()) {
- _cmd.add(st.nextToken());
- }
- return this;
- }
-
- public Cmd addAbsFile(File file) {
- _cmd.add(file.getPath());
- return this;
- }
-
- public Cmd addFile(String pathname) {
- _cmd.add(new File(_basedir, pathname).getPath());
- return this;
- }
-
- public Cmd addExe(String pathname) {
- if (Util.WINDOWS_OS) {
- pathname += ".exe";
- }
- _cmd.add(new File(_bindir, pathname).getPath());
- return this;
- }
-
- public Cmd addFiles(List files) {
- for (Iterator iter = files.iterator(); iter.hasNext();) {
- addFile((String) iter.next());
- }
- return this;
- }
-
- public void exec(Log log) throws ExecException {
- String[] cmd = (String[]) _cmd.toArray(new String[_cmd.size()]);
- Util.exec(cmd, log);
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on 2005-04-24
+ */
+package net.sf.launch4j;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import net.sf.launch4j.binding.InvariantViolationException;
+import net.sf.launch4j.config.Config;
+import net.sf.launch4j.config.ConfigPersister;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class Builder {
+ private final Log _log;
+ private final File _basedir;
+
+ public Builder(Log log) {
+ _log = log;
+ _basedir = Util.getJarBasedir();
+ }
+
+ public Builder(Log log, File basedir) {
+ _log = log;
+ _basedir = basedir;
+ }
+
+ /**
+ * @return Output file path.
+ */
+ public File build() throws BuilderException {
+ final Config c = ConfigPersister.getInstance().getConfig();
+ try {
+ c.validate();
+ } catch (InvariantViolationException e) {
+ throw new BuilderException(e.getMessage());
+ }
+ File rc = null;
+ File ro = null;
+ File outfile = null;
+ FileInputStream is = null;
+ FileOutputStream os = null;
+ final RcBuilder rcb = new RcBuilder();
+ try {
+ rc = rcb.build(c);
+ ro = Util.createTempFile("o");
+ outfile = ConfigPersister.getInstance().getOutputFile();
+
+ Cmd resCmd = new Cmd(_basedir);
+ resCmd.addExe("windres")
+ .add(Util.WINDOWS_OS ? "--preprocessor=type" : "--preprocessor=cat")
+ .add("-J rc -O coff -F pe-i386")
+ .addAbsFile(rc)
+ .addAbsFile(ro);
+ _log.append(Messages.getString("Builder.compiling.resources"));
+ resCmd.exec(_log);
+
+ Cmd ldCmd = new Cmd(_basedir);
+ ldCmd.addExe("ld")
+ .add("-mi386pe")
+ .add("--oformat pei-i386")
+ .add((c.getHeaderType().equals(Config.GUI_HEADER))
+ ? "--subsystem windows" : "--subsystem console")
+ .add("-s") // strip symbols
+ .addFiles(c.getHeaderObjects())
+ .addAbsFile(ro)
+ .addFiles(c.getLibs())
+ .add("-o")
+ .addAbsFile(outfile);
+ _log.append(Messages.getString("Builder.linking"));
+ ldCmd.exec(_log);
+
+ if (!c.isDontWrapJar()) {
+ _log.append(Messages.getString("Builder.wrapping"));
+ int len;
+ byte[] buffer = new byte[1024];
+ is = new FileInputStream(Util.getAbsoluteFile(
+ ConfigPersister.getInstance().getConfigPath(), c.getJar()));
+ os = new FileOutputStream(outfile, true);
+ while ((len = is.read(buffer)) > 0) {
+ os.write(buffer, 0, len);
+ }
+ }
+ _log.append(Messages.getString("Builder.success") + outfile.getPath());
+ return outfile;
+ } catch (IOException e) {
+ Util.delete(outfile);
+ _log.append(e.getMessage());
+ throw new BuilderException(e);
+ } catch (ExecException e) {
+ Util.delete(outfile);
+ String msg = e.getMessage();
+ if (msg != null && msg.indexOf("windres") != -1) {
+ if (e.getErrLine() != -1) {
+ _log.append(Messages.getString("Builder.line.has.errors",
+ String.valueOf(e.getErrLine())));
+ _log.append(rcb.getLine(e.getErrLine()));
+ } else {
+ _log.append(Messages.getString("Builder.generated.resource.file"));
+ _log.append(rcb.getContent());
+ }
+ }
+ throw new BuilderException(e);
+ } finally {
+ Util.close(is);
+ Util.close(os);
+ Util.delete(rc);
+ Util.delete(ro);
+ }
+ }
+}
+
+class Cmd {
+ private final List _cmd = new ArrayList();
+ private final File _basedir;
+ private final File _bindir;
+
+ public Cmd(File basedir) {
+ _basedir = basedir;
+ String path = System.getProperty("launch4j.bindir");
+ if (path == null) {
+ _bindir = new File(basedir, "bin");
+ } else {
+ File bindir = new File(path);
+ _bindir = bindir.isAbsolute() ? bindir : new File(basedir, path);
+ }
+ }
+
+ public Cmd add(String s) {
+ StringTokenizer st = new StringTokenizer(s);
+ while (st.hasMoreTokens()) {
+ _cmd.add(st.nextToken());
+ }
+ return this;
+ }
+
+ public Cmd addAbsFile(File file) {
+ _cmd.add(file.getPath());
+ return this;
+ }
+
+ public Cmd addFile(String pathname) {
+ _cmd.add(new File(_basedir, pathname).getPath());
+ return this;
+ }
+
+ public Cmd addExe(String pathname) {
+ if (Util.WINDOWS_OS) {
+ pathname += ".exe";
+ }
+ _cmd.add(new File(_bindir, pathname).getPath());
+ return this;
+ }
+
+ public Cmd addFiles(List files) {
+ for (Iterator iter = files.iterator(); iter.hasNext();) {
+ addFile((String) iter.next());
+ }
+ return this;
+ }
+
+ public void exec(Log log) throws ExecException {
+ String[] cmd = (String[]) _cmd.toArray(new String[_cmd.size()]);
+ Util.exec(cmd, log);
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/BuilderException.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/BuilderException.java
old mode 100755
new mode 100644
index a84c2e279bb..d4db8c84e29
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/BuilderException.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/BuilderException.java
@@ -1,52 +1,52 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on May 13, 2005
- */
-package net.sf.launch4j;
-
-/**
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public class BuilderException extends Exception {
- public BuilderException() {}
-
- public BuilderException(Throwable t) {
- super(t);
- }
-
- public BuilderException(String msg) {
- super(msg);
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on May 13, 2005
+ */
+package net.sf.launch4j;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class BuilderException extends Exception {
+ public BuilderException() {}
+
+ public BuilderException(Throwable t) {
+ super(t);
+ }
+
+ public BuilderException(String msg) {
+ super(msg);
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/ExecException.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/ExecException.java
old mode 100755
new mode 100644
index 236ae780f15..061454d41a2
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/ExecException.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/ExecException.java
@@ -1,66 +1,66 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on May 14, 2005
- */
-package net.sf.launch4j;
-
-/**
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public class ExecException extends Exception {
- private final int _errLine;
-
- public ExecException(Throwable t, int errLine) {
- super(t);
- _errLine = errLine;
- }
-
- public ExecException(Throwable t) {
- this(t, -1);
- }
-
- public ExecException(String msg, int errLine) {
- super(msg);
- _errLine = errLine;
- }
-
- public ExecException(String msg) {
- this(msg, -1);
- }
-
- public int getErrLine() {
- return _errLine;
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on May 14, 2005
+ */
+package net.sf.launch4j;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class ExecException extends Exception {
+ private final int _errLine;
+
+ public ExecException(Throwable t, int errLine) {
+ super(t);
+ _errLine = errLine;
+ }
+
+ public ExecException(Throwable t) {
+ this(t, -1);
+ }
+
+ public ExecException(String msg, int errLine) {
+ super(msg);
+ _errLine = errLine;
+ }
+
+ public ExecException(String msg) {
+ this(msg, -1);
+ }
+
+ public int getErrLine() {
+ return _errLine;
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/FileChooserFilter.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/FileChooserFilter.java
old mode 100755
new mode 100644
index 5199a6deb3a..606edf08e27
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/FileChooserFilter.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/FileChooserFilter.java
@@ -1,76 +1,76 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on 2004-01-15
- */
-package net.sf.launch4j;
-
-import java.io.File;
-
-import javax.swing.filechooser.FileFilter;
-
-/**
- * @author Copyright (C) 2004 Grzegorz Kowal
- */
-public class FileChooserFilter extends FileFilter {
- String _description;
- String[] _extensions;
-
- public FileChooserFilter(String description, String extension) {
- _description = description;
- _extensions = new String[] {extension};
- }
-
- public FileChooserFilter(String description, String[] extensions) {
- _description = description;
- _extensions = extensions;
- }
-
- public boolean accept(File f) {
- if (f.isDirectory()) {
- return true;
- }
- String ext = Util.getExtension(f);
- for (int i = 0; i < _extensions.length; i++) {
- if (ext.toLowerCase().equals(_extensions[i].toLowerCase())) {
- return true;
- }
- }
- return false;
- }
-
- public String getDescription() {
- return _description;
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on 2004-01-15
+ */
+package net.sf.launch4j;
+
+import java.io.File;
+
+import javax.swing.filechooser.FileFilter;
+
+/**
+ * @author Copyright (C) 2004 Grzegorz Kowal
+ */
+public class FileChooserFilter extends FileFilter {
+ String _description;
+ String[] _extensions;
+
+ public FileChooserFilter(String description, String extension) {
+ _description = description;
+ _extensions = new String[] {extension};
+ }
+
+ public FileChooserFilter(String description, String[] extensions) {
+ _description = description;
+ _extensions = extensions;
+ }
+
+ public boolean accept(File f) {
+ if (f.isDirectory()) {
+ return true;
+ }
+ String ext = Util.getExtension(f);
+ for (int i = 0; i < _extensions.length; i++) {
+ if (ext.toLowerCase().equals(_extensions[i].toLowerCase())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public String getDescription() {
+ return _description;
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/Log.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/Log.java
old mode 100755
new mode 100644
index c4d591b0cbb..d96f53c9b98
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/Log.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/Log.java
@@ -1,105 +1,105 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on May 12, 2005
- */
-package net.sf.launch4j;
-
-import javax.swing.JTextArea;
-import javax.swing.SwingUtilities;
-
-/**
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public abstract class Log {
- private static final Log _consoleLog = new ConsoleLog();
- private static final Log _antLog = new AntLog();
-
- public abstract void clear();
- public abstract void append(String line);
-
- public static Log getConsoleLog() {
- return _consoleLog;
- }
-
- public static Log getAntLog() {
- return _antLog;
- }
-
- public static Log getSwingLog(JTextArea textArea) {
- return new SwingLog(textArea);
- }
-}
-
-class ConsoleLog extends Log {
- public void clear() {
- System.out.println("\n");
- }
-
- public void append(String line) {
- System.out.println("launch4j: " + line);
- }
-}
-
-class AntLog extends Log {
- public void clear() {
- System.out.println("\n");
- }
-
- public void append(String line) {
- System.out.println(line);
- }
-}
-
-class SwingLog extends Log {
- private final JTextArea _textArea;
-
- public SwingLog(JTextArea textArea) {
- _textArea = textArea;
- }
-
- public void clear() {
- SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- _textArea.setText("");
- }});
- }
-
- public void append(final String line) {
- SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- _textArea.append(line + "\n");
- }});
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on May 12, 2005
+ */
+package net.sf.launch4j;
+
+import javax.swing.JTextArea;
+import javax.swing.SwingUtilities;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public abstract class Log {
+ private static final Log _consoleLog = new ConsoleLog();
+ private static final Log _antLog = new AntLog();
+
+ public abstract void clear();
+ public abstract void append(String line);
+
+ public static Log getConsoleLog() {
+ return _consoleLog;
+ }
+
+ public static Log getAntLog() {
+ return _antLog;
+ }
+
+ public static Log getSwingLog(JTextArea textArea) {
+ return new SwingLog(textArea);
+ }
+}
+
+class ConsoleLog extends Log {
+ public void clear() {
+ System.out.println("\n");
+ }
+
+ public void append(String line) {
+ System.out.println("launch4j: " + line);
+ }
+}
+
+class AntLog extends Log {
+ public void clear() {
+ System.out.println("\n");
+ }
+
+ public void append(String line) {
+ System.out.println(line);
+ }
+}
+
+class SwingLog extends Log {
+ private final JTextArea _textArea;
+
+ public SwingLog(JTextArea textArea) {
+ _textArea = textArea;
+ }
+
+ public void clear() {
+ SwingUtilities.invokeLater(new Runnable() {
+ public void run() {
+ _textArea.setText("");
+ }});
+ }
+
+ public void append(final String line) {
+ SwingUtilities.invokeLater(new Runnable() {
+ public void run() {
+ _textArea.append(line + "\n");
+ }});
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/Main.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/Main.java
old mode 100755
new mode 100644
index 45f84ad7964..7153aad6901
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/Main.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/Main.java
@@ -1,99 +1,99 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2008 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on Apr 21, 2005
- */
-package net.sf.launch4j;
-
-import java.io.File;
-import java.io.InputStream;
-import java.util.Properties;
-
-import net.sf.launch4j.config.ConfigPersister;
-import net.sf.launch4j.formimpl.MainFrame;
-
-/**
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public class Main {
- private static String _name;
- private static String _description;
-
- public static void main(String[] args) {
- try {
- Properties props = new Properties();
- InputStream in = Main.class.getClassLoader()
- .getResourceAsStream("launch4j.properties");
- props.load(in);
- in.close();
- setDescription(props);
-
- if (args.length == 0) {
- ConfigPersister.getInstance().createBlank();
- MainFrame.createInstance();
- } else if (args.length == 1 && !args[0].startsWith("-")) {
- ConfigPersister.getInstance().load(new File(args[0]));
- Builder b = new Builder(Log.getConsoleLog());
- b.build();
- } else {
- System.out.println(_description
- + Messages.getString("Main.usage")
- + ": launch4j config.xml");
- }
- } catch (Exception e) {
- Log.getConsoleLog().append(e.getMessage());
- }
- }
-
- public static String getName() {
- return _name;
- }
-
- public static String getDescription() {
- return _description;
- }
-
- private static void setDescription(Properties props) {
- _name = "Launch4j " + props.getProperty("version");
- _description = _name +
- " (http://launch4j.sourceforge.net/)\n" +
- "Cross-platform Java application wrapper" +
- " for creating Windows native executables.\n\n" +
- "Copyright (C) 2004, 2008 Grzegorz Kowal\n\n" +
- "Launch4j comes with ABSOLUTELY NO WARRANTY.\n" +
- "This is free software, licensed under the BSD License.\n" +
- "This product includes software developed by the Apache Software Foundation" +
- " (http://www.apache.org/).";
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2008 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on Apr 21, 2005
+ */
+package net.sf.launch4j;
+
+import java.io.File;
+import java.io.InputStream;
+import java.util.Properties;
+
+import net.sf.launch4j.config.ConfigPersister;
+import net.sf.launch4j.formimpl.MainFrame;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class Main {
+ private static String _name;
+ private static String _description;
+
+ public static void main(String[] args) {
+ try {
+ Properties props = new Properties();
+ InputStream in = Main.class.getClassLoader()
+ .getResourceAsStream("launch4j.properties");
+ props.load(in);
+ in.close();
+ setDescription(props);
+
+ if (args.length == 0) {
+ ConfigPersister.getInstance().createBlank();
+ MainFrame.createInstance();
+ } else if (args.length == 1 && !args[0].startsWith("-")) {
+ ConfigPersister.getInstance().load(new File(args[0]));
+ Builder b = new Builder(Log.getConsoleLog());
+ b.build();
+ } else {
+ System.out.println(_description
+ + Messages.getString("Main.usage")
+ + ": launch4j config.xml");
+ }
+ } catch (Exception e) {
+ Log.getConsoleLog().append(e.getMessage());
+ }
+ }
+
+ public static String getName() {
+ return _name;
+ }
+
+ public static String getDescription() {
+ return _description;
+ }
+
+ private static void setDescription(Properties props) {
+ _name = "Launch4j " + props.getProperty("version");
+ _description = _name +
+ " (http://launch4j.sourceforge.net/)\n" +
+ "Cross-platform Java application wrapper" +
+ " for creating Windows native executables.\n\n" +
+ "Copyright (C) 2004, 2008 Grzegorz Kowal\n\n" +
+ "Launch4j comes with ABSOLUTELY NO WARRANTY.\n" +
+ "This is free software, licensed under the BSD License.\n" +
+ "This product includes software developed by the Apache Software Foundation" +
+ " (http://www.apache.org/).";
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/Messages.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/Messages.java
old mode 100755
new mode 100644
index 35d4c895084..1c082b20f7c
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/Messages.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/Messages.java
@@ -1,78 +1,78 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package net.sf.launch4j;
-
-import java.text.MessageFormat;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-public class Messages {
- private static final String BUNDLE_NAME = "net.sf.launch4j.messages";
-
- private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
- .getBundle(BUNDLE_NAME);
- private static final MessageFormat FORMATTER = new MessageFormat("");
-
- private Messages() {
- }
-
- public static String getString(String key) {
- try {
- return RESOURCE_BUNDLE.getString(key);
- } catch (MissingResourceException e) {
- return '!' + key + '!';
- }
- }
-
- public static String getString(String key, String arg0) {
- return getString(key, new Object[] {arg0});
- }
-
- public static String getString(String key, String arg0, String arg1) {
- return getString(key, new Object[] {arg0, arg1});
- }
-
- public static String getString(String key, String arg0, String arg1, String arg2) {
- return getString(key, new Object[] {arg0, arg1, arg2});
- }
-
- public static String getString(String key, Object[] args) {
- try {
- FORMATTER.applyPattern(RESOURCE_BUNDLE.getString(key));
- return FORMATTER.format(args);
- } catch (MissingResourceException e) {
- return '!' + key + '!';
- }
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+package net.sf.launch4j;
+
+import java.text.MessageFormat;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+public class Messages {
+ private static final String BUNDLE_NAME = "net.sf.launch4j.messages";
+
+ private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
+ .getBundle(BUNDLE_NAME);
+ private static final MessageFormat FORMATTER = new MessageFormat("");
+
+ private Messages() {
+ }
+
+ public static String getString(String key) {
+ try {
+ return RESOURCE_BUNDLE.getString(key);
+ } catch (MissingResourceException e) {
+ return '!' + key + '!';
+ }
+ }
+
+ public static String getString(String key, String arg0) {
+ return getString(key, new Object[] {arg0});
+ }
+
+ public static String getString(String key, String arg0, String arg1) {
+ return getString(key, new Object[] {arg0, arg1});
+ }
+
+ public static String getString(String key, String arg0, String arg1, String arg2) {
+ return getString(key, new Object[] {arg0, arg1, arg2});
+ }
+
+ public static String getString(String key, Object[] args) {
+ try {
+ FORMATTER.applyPattern(RESOURCE_BUNDLE.getString(key));
+ return FORMATTER.format(args);
+ } catch (MissingResourceException e) {
+ return '!' + key + '!';
+ }
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/OptionParser.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/OptionParser.java
old mode 100755
new mode 100644
index bb2432c8e18..46954e982b5
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/OptionParser.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/OptionParser.java
@@ -1,71 +1,71 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on 2005-04-24
- */
-package net.sf.launch4j;
-
-//import net.sf.launch4j.config.Config;
-
-//import org.apache.commons.cli.CommandLine;
-//import org.apache.commons.cli.CommandLineParser;
-//import org.apache.commons.cli.HelpFormatter;
-//import org.apache.commons.cli.Options;
-//import org.apache.commons.cli.ParseException;
-//import org.apache.commons.cli.PosixParser;
-
-/**
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public class OptionParser {
-
-// private final Options _options;
-//
-// public OptionParser() {
-// _options = new Options();
-// _options.addOption("h", "header", true, "header");
-// }
-//
-// public Config parse(Config c, String[] args) throws ParseException {
-// CommandLineParser parser = new PosixParser();
-// CommandLine cl = parser.parse(_options, args);
-// c.setJar(getFile(props, Config.JAR));
-// c.setOutfile(getFile(props, Config.OUTFILE));
-// }
-//
-// public void printHelp() {
-// HelpFormatter formatter = new HelpFormatter();
-// formatter.printHelp("launch4j", _options);
-// }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on 2005-04-24
+ */
+package net.sf.launch4j;
+
+//import net.sf.launch4j.config.Config;
+
+//import org.apache.commons.cli.CommandLine;
+//import org.apache.commons.cli.CommandLineParser;
+//import org.apache.commons.cli.HelpFormatter;
+//import org.apache.commons.cli.Options;
+//import org.apache.commons.cli.ParseException;
+//import org.apache.commons.cli.PosixParser;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class OptionParser {
+
+// private final Options _options;
+//
+// public OptionParser() {
+// _options = new Options();
+// _options.addOption("h", "header", true, "header");
+// }
+//
+// public Config parse(Config c, String[] args) throws ParseException {
+// CommandLineParser parser = new PosixParser();
+// CommandLine cl = parser.parse(_options, args);
+// c.setJar(getFile(props, Config.JAR));
+// c.setOutfile(getFile(props, Config.OUTFILE));
+// }
+//
+// public void printHelp() {
+// HelpFormatter formatter = new HelpFormatter();
+// formatter.printHelp("launch4j", _options);
+// }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/RcBuilder.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/RcBuilder.java
old mode 100755
new mode 100644
index f8885e3e6d4..c0cdb7118b4
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/RcBuilder.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/RcBuilder.java
@@ -1,340 +1,340 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on 2005-04-24
- */
-package net.sf.launch4j;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.List;
-
-import net.sf.launch4j.config.Config;
-import net.sf.launch4j.config.ConfigPersister;
-import net.sf.launch4j.config.Jre;
-import net.sf.launch4j.config.Msg;
-import net.sf.launch4j.config.Splash;
-import net.sf.launch4j.config.VersionInfo;
-
-/**
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public class RcBuilder {
-
- // winnt.h
- public static final int LANG_NEUTRAL = 0;
- public static final int SUBLANG_NEUTRAL = 0;
- public static final int SUBLANG_DEFAULT = 1;
- public static final int SUBLANG_SYS_DEFAULT = 2;
-
- // MANIFEST
- public static final int MANIFEST = 1;
-
- // ICON
- public static final int APP_ICON = 1;
-
- // BITMAP
- public static final int SPLASH_BITMAP = 1;
-
- // RCDATA
- public static final int JRE_PATH = 1;
- public static final int JAVA_MIN_VER = 2;
- public static final int JAVA_MAX_VER = 3;
- public static final int SHOW_SPLASH = 4;
- public static final int SPLASH_WAITS_FOR_WINDOW = 5;
- public static final int SPLASH_TIMEOUT = 6;
- public static final int SPLASH_TIMEOUT_ERR = 7;
- public static final int CHDIR = 8;
- public static final int SET_PROC_NAME = 9;
- public static final int ERR_TITLE = 10;
- public static final int GUI_HEADER_STAYS_ALIVE = 11;
- public static final int JVM_OPTIONS = 12;
- public static final int CMD_LINE = 13;
- public static final int JAR = 14;
- public static final int MAIN_CLASS = 15;
- public static final int CLASSPATH = 16;
- public static final int WRAPPER = 17;
- public static final int JDK_PREFERENCE = 18;
- public static final int ENV_VARIABLES = 19;
- public static final int PRIORITY_CLASS = 20;
- public static final int DOWNLOAD_URL = 21;
- public static final int SUPPORT_URL = 22;
- public static final int MUTEX_NAME = 23;
- public static final int INSTANCE_WINDOW_TITLE = 24;
- public static final int INITIAL_HEAP_SIZE = 25;
- public static final int INITIAL_HEAP_PERCENT = 26;
- public static final int MAX_HEAP_SIZE = 27;
- public static final int MAX_HEAP_PERCENT = 28;
-
- public static final int STARTUP_ERR = 101;
- public static final int BUNDLED_JRE_ERR = 102;
- public static final int JRE_VERSION_ERR = 103;
- public static final int LAUNCHER_ERR = 104;
- public static final int INSTANCE_ALREADY_EXISTS_MSG = 105;
-
- private final StringBuffer _sb = new StringBuffer();
-
- public String getContent() {
- return _sb.toString();
- }
-
- public String getLine(int line) {
- return _sb.toString().split("\n")[line - 1];
- }
-
- public File build(Config c) throws IOException {
- _sb.append("LANGUAGE ");
- _sb.append(LANG_NEUTRAL);
- _sb.append(", ");
- _sb.append(SUBLANG_DEFAULT);
- _sb.append('\n');
- addVersionInfo(c.getVersionInfo());
- addJre(c.getJre());
- addManifest(MANIFEST, c.getManifest());
- addIcon(APP_ICON, c.getIcon());
- addText(ERR_TITLE, c.getErrTitle());
- addText(DOWNLOAD_URL, c.getDownloadUrl());
- addText(SUPPORT_URL, c.getSupportUrl());
- addText(CMD_LINE, c.getCmdLine());
- addWindowsPath(CHDIR, c.getChdir());
- addText(PRIORITY_CLASS, String.valueOf(c.getPriorityClass()));
- addTrue(SET_PROC_NAME, c.isCustomProcName());
- addTrue(GUI_HEADER_STAYS_ALIVE, c.isStayAlive());
- addSplash(c.getSplash());
- addMessages(c);
-
- if (c.getSingleInstance() != null) {
- addText(MUTEX_NAME, c.getSingleInstance().getMutexName());
- addText(INSTANCE_WINDOW_TITLE, c.getSingleInstance().getWindowTitle());
- }
-
- if (c.getVariables() != null && !c.getVariables().isEmpty()) {
- StringBuffer vars = new StringBuffer();
- append(vars, c.getVariables(), "\t");
- addText(ENV_VARIABLES, vars.toString());
- }
-
- // MAIN_CLASS / JAR
- addTrue(WRAPPER, !c.isDontWrapJar());
- if (c.getClassPath() != null) {
- addText(MAIN_CLASS, c.getClassPath().getMainClass());
- addWindowsPath(CLASSPATH, c.getClassPath().getPathsString());
- }
- if (c.isDontWrapJar() && c.getJar() != null) {
- addWindowsPath(JAR, c.getJar().getPath());
- }
-
- File f = Util.createTempFile("rc");
- BufferedWriter w = new BufferedWriter(new FileWriter(f));
- w.write(_sb.toString());
- w.close();
- return f;
- }
-
- private void addVersionInfo(VersionInfo v) {
- if (v == null) {
- return;
- }
- _sb.append("1 VERSIONINFO\n");
- _sb.append("FILEVERSION ");
- _sb.append(v.getFileVersion().replaceAll("\\.", ", "));
- _sb.append("\nPRODUCTVERSION ");
- _sb.append(v.getProductVersion().replaceAll("\\.", ", "));
- _sb.append("\nFILEFLAGSMASK 0\n" +
- "FILEOS 0x40000\n" +
- "FILETYPE 1\n" +
- "{\n" +
- " BLOCK \"StringFileInfo\"\n" +
- " {\n" +
- " BLOCK \"040904E4\"\n" + // English
- " {\n");
- addVerBlockValue("CompanyName", v.getCompanyName());
- addVerBlockValue("FileDescription", v.getFileDescription());
- addVerBlockValue("FileVersion", v.getTxtFileVersion());
- addVerBlockValue("InternalName", v.getInternalName());
- addVerBlockValue("LegalCopyright", v.getCopyright());
- addVerBlockValue("OriginalFilename", v.getOriginalFilename());
- addVerBlockValue("ProductName", v.getProductName());
- addVerBlockValue("ProductVersion", v.getTxtProductVersion());
- _sb.append(" }\n }\nBLOCK \"VarFileInfo\"\n{\nVALUE \"Translation\", 0x0409, 0x04E4\n}\n}");
- }
-
- private void addJre(Jre jre) {
- addWindowsPath(JRE_PATH, jre.getPath());
- addText(JAVA_MIN_VER, jre.getMinVersion());
- addText(JAVA_MAX_VER, jre.getMaxVersion());
- addText(JDK_PREFERENCE, String.valueOf(jre.getJdkPreferenceIndex()));
- addInteger(INITIAL_HEAP_SIZE, jre.getInitialHeapSize());
- addInteger(INITIAL_HEAP_PERCENT, jre.getInitialHeapPercent());
- addInteger(MAX_HEAP_SIZE, jre.getMaxHeapSize());
- addInteger(MAX_HEAP_PERCENT, jre.getMaxHeapPercent());
-
- StringBuffer options = new StringBuffer();
- if (jre.getOptions() != null && !jre.getOptions().isEmpty()) {
- addSpace(options);
- append(options, jre.getOptions(), " ");
- }
- addText(JVM_OPTIONS, options.toString());
- }
-
- private void addSplash(Splash splash) {
- if (splash == null) {
- return;
- }
- addTrue(SHOW_SPLASH, true);
- addTrue(SPLASH_WAITS_FOR_WINDOW, splash.getWaitForWindow());
- addText(SPLASH_TIMEOUT, String.valueOf(splash.getTimeout()));
- addTrue(SPLASH_TIMEOUT_ERR, splash.isTimeoutErr());
- addBitmap(SPLASH_BITMAP, splash.getFile());
- }
-
- private void addMessages(Config c) {
- Msg msg = c.getMessages();
- if (msg == null) {
- msg = new Msg();
- }
- addText(STARTUP_ERR, msg.getStartupErr());
- addText(BUNDLED_JRE_ERR, msg.getBundledJreErr());
- addText(JRE_VERSION_ERR, msg.getJreVersionErr());
- addText(LAUNCHER_ERR, msg.getLauncherErr());
- if (c.getSingleInstance() != null) {
- addText(INSTANCE_ALREADY_EXISTS_MSG, msg.getInstanceAlreadyExistsMsg());
- }
- }
-
- private void append(StringBuffer sb, List list, String separator) {
- for (int i = 0; i < list.size(); i++) {
- sb.append(list.get(i));
- if (i < list.size() - 1) {
- sb.append(separator);
- }
- }
- }
-
- private void addText(int id, String text) {
- if (text == null || text.equals("")) {
- return;
- }
- _sb.append(id);
- _sb.append(" RCDATA BEGIN \"");
- _sb.append(escape(text));
- _sb.append("\\0\" END\n");
- }
-
- private void addTrue(int id, boolean value) {
- if (value) {
- addText(id, "true");
- }
- }
-
- private void addInteger(int id, Integer value) {
- if (value != null) {
- addText(id, value.toString());
- }
- }
-
- /**
- * Stores path in Windows format with '\' separators.
- */
- private void addWindowsPath(int id, String path) {
- if (path == null || path.equals("")) {
- return;
- }
- _sb.append(id);
- _sb.append(" RCDATA BEGIN \"");
- _sb.append(path.replaceAll("\\\\", "\\\\\\\\")
- .replaceAll("/", "\\\\\\\\"));
- _sb.append("\\0\" END\n");
- }
-
- private void addManifest(int id, File manifest) {
- if (manifest == null || manifest.getPath().equals("")) {
- return;
- }
- _sb.append(id);
- _sb.append(" 24 \"");
- _sb.append(getPath(Util.getAbsoluteFile(
- ConfigPersister.getInstance().getConfigPath(), manifest)));
- _sb.append("\"\n");
- }
-
- private void addIcon(int id, File icon) {
- if (icon == null || icon.getPath().equals("")) {
- return;
- }
- _sb.append(id);
- _sb.append(" ICON DISCARDABLE \"");
- _sb.append(getPath(Util.getAbsoluteFile(
- ConfigPersister.getInstance().getConfigPath(), icon)));
- _sb.append("\"\n");
- }
-
- private void addBitmap(int id, File bitmap) {
- if (bitmap == null) {
- return;
- }
- _sb.append(id);
- _sb.append(" BITMAP \"");
- _sb.append(getPath(Util.getAbsoluteFile(
- ConfigPersister.getInstance().getConfigPath(), bitmap)));
- _sb.append("\"\n");
- }
-
- private String getPath(File f) {
- return f.getPath().replaceAll("\\\\", "\\\\\\\\");
- }
-
- private void addSpace(StringBuffer sb) {
- int len = sb.length();
- if (len-- > 0 && sb.charAt(len) != ' ') {
- sb.append(' ');
- }
- }
-
- private void addVerBlockValue(String key, String value) {
- _sb.append(" VALUE \"");
- _sb.append(key);
- _sb.append("\", \"");
- if (value != null) {
- _sb.append(escape(value));
- }
- _sb.append("\"\n");
- }
-
- private String escape(String text) {
- return text.replaceAll("\"", "\"\"");
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on 2005-04-24
+ */
+package net.sf.launch4j;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.List;
+
+import net.sf.launch4j.config.Config;
+import net.sf.launch4j.config.ConfigPersister;
+import net.sf.launch4j.config.Jre;
+import net.sf.launch4j.config.Msg;
+import net.sf.launch4j.config.Splash;
+import net.sf.launch4j.config.VersionInfo;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class RcBuilder {
+
+ // winnt.h
+ public static final int LANG_NEUTRAL = 0;
+ public static final int SUBLANG_NEUTRAL = 0;
+ public static final int SUBLANG_DEFAULT = 1;
+ public static final int SUBLANG_SYS_DEFAULT = 2;
+
+ // MANIFEST
+ public static final int MANIFEST = 1;
+
+ // ICON
+ public static final int APP_ICON = 1;
+
+ // BITMAP
+ public static final int SPLASH_BITMAP = 1;
+
+ // RCDATA
+ public static final int JRE_PATH = 1;
+ public static final int JAVA_MIN_VER = 2;
+ public static final int JAVA_MAX_VER = 3;
+ public static final int SHOW_SPLASH = 4;
+ public static final int SPLASH_WAITS_FOR_WINDOW = 5;
+ public static final int SPLASH_TIMEOUT = 6;
+ public static final int SPLASH_TIMEOUT_ERR = 7;
+ public static final int CHDIR = 8;
+ public static final int SET_PROC_NAME = 9;
+ public static final int ERR_TITLE = 10;
+ public static final int GUI_HEADER_STAYS_ALIVE = 11;
+ public static final int JVM_OPTIONS = 12;
+ public static final int CMD_LINE = 13;
+ public static final int JAR = 14;
+ public static final int MAIN_CLASS = 15;
+ public static final int CLASSPATH = 16;
+ public static final int WRAPPER = 17;
+ public static final int JDK_PREFERENCE = 18;
+ public static final int ENV_VARIABLES = 19;
+ public static final int PRIORITY_CLASS = 20;
+ public static final int DOWNLOAD_URL = 21;
+ public static final int SUPPORT_URL = 22;
+ public static final int MUTEX_NAME = 23;
+ public static final int INSTANCE_WINDOW_TITLE = 24;
+ public static final int INITIAL_HEAP_SIZE = 25;
+ public static final int INITIAL_HEAP_PERCENT = 26;
+ public static final int MAX_HEAP_SIZE = 27;
+ public static final int MAX_HEAP_PERCENT = 28;
+
+ public static final int STARTUP_ERR = 101;
+ public static final int BUNDLED_JRE_ERR = 102;
+ public static final int JRE_VERSION_ERR = 103;
+ public static final int LAUNCHER_ERR = 104;
+ public static final int INSTANCE_ALREADY_EXISTS_MSG = 105;
+
+ private final StringBuffer _sb = new StringBuffer();
+
+ public String getContent() {
+ return _sb.toString();
+ }
+
+ public String getLine(int line) {
+ return _sb.toString().split("\n")[line - 1];
+ }
+
+ public File build(Config c) throws IOException {
+ _sb.append("LANGUAGE ");
+ _sb.append(LANG_NEUTRAL);
+ _sb.append(", ");
+ _sb.append(SUBLANG_DEFAULT);
+ _sb.append('\n');
+ addVersionInfo(c.getVersionInfo());
+ addJre(c.getJre());
+ addManifest(MANIFEST, c.getManifest());
+ addIcon(APP_ICON, c.getIcon());
+ addText(ERR_TITLE, c.getErrTitle());
+ addText(DOWNLOAD_URL, c.getDownloadUrl());
+ addText(SUPPORT_URL, c.getSupportUrl());
+ addText(CMD_LINE, c.getCmdLine());
+ addWindowsPath(CHDIR, c.getChdir());
+ addText(PRIORITY_CLASS, String.valueOf(c.getPriorityClass()));
+ addTrue(SET_PROC_NAME, c.isCustomProcName());
+ addTrue(GUI_HEADER_STAYS_ALIVE, c.isStayAlive());
+ addSplash(c.getSplash());
+ addMessages(c);
+
+ if (c.getSingleInstance() != null) {
+ addText(MUTEX_NAME, c.getSingleInstance().getMutexName());
+ addText(INSTANCE_WINDOW_TITLE, c.getSingleInstance().getWindowTitle());
+ }
+
+ if (c.getVariables() != null && !c.getVariables().isEmpty()) {
+ StringBuffer vars = new StringBuffer();
+ append(vars, c.getVariables(), "\t");
+ addText(ENV_VARIABLES, vars.toString());
+ }
+
+ // MAIN_CLASS / JAR
+ addTrue(WRAPPER, !c.isDontWrapJar());
+ if (c.getClassPath() != null) {
+ addText(MAIN_CLASS, c.getClassPath().getMainClass());
+ addWindowsPath(CLASSPATH, c.getClassPath().getPathsString());
+ }
+ if (c.isDontWrapJar() && c.getJar() != null) {
+ addWindowsPath(JAR, c.getJar().getPath());
+ }
+
+ File f = Util.createTempFile("rc");
+ BufferedWriter w = new BufferedWriter(new FileWriter(f));
+ w.write(_sb.toString());
+ w.close();
+ return f;
+ }
+
+ private void addVersionInfo(VersionInfo v) {
+ if (v == null) {
+ return;
+ }
+ _sb.append("1 VERSIONINFO\n");
+ _sb.append("FILEVERSION ");
+ _sb.append(v.getFileVersion().replaceAll("\\.", ", "));
+ _sb.append("\nPRODUCTVERSION ");
+ _sb.append(v.getProductVersion().replaceAll("\\.", ", "));
+ _sb.append("\nFILEFLAGSMASK 0\n" +
+ "FILEOS 0x40000\n" +
+ "FILETYPE 1\n" +
+ "{\n" +
+ " BLOCK \"StringFileInfo\"\n" +
+ " {\n" +
+ " BLOCK \"040904E4\"\n" + // English
+ " {\n");
+ addVerBlockValue("CompanyName", v.getCompanyName());
+ addVerBlockValue("FileDescription", v.getFileDescription());
+ addVerBlockValue("FileVersion", v.getTxtFileVersion());
+ addVerBlockValue("InternalName", v.getInternalName());
+ addVerBlockValue("LegalCopyright", v.getCopyright());
+ addVerBlockValue("OriginalFilename", v.getOriginalFilename());
+ addVerBlockValue("ProductName", v.getProductName());
+ addVerBlockValue("ProductVersion", v.getTxtProductVersion());
+ _sb.append(" }\n }\nBLOCK \"VarFileInfo\"\n{\nVALUE \"Translation\", 0x0409, 0x04E4\n}\n}");
+ }
+
+ private void addJre(Jre jre) {
+ addWindowsPath(JRE_PATH, jre.getPath());
+ addText(JAVA_MIN_VER, jre.getMinVersion());
+ addText(JAVA_MAX_VER, jre.getMaxVersion());
+ addText(JDK_PREFERENCE, String.valueOf(jre.getJdkPreferenceIndex()));
+ addInteger(INITIAL_HEAP_SIZE, jre.getInitialHeapSize());
+ addInteger(INITIAL_HEAP_PERCENT, jre.getInitialHeapPercent());
+ addInteger(MAX_HEAP_SIZE, jre.getMaxHeapSize());
+ addInteger(MAX_HEAP_PERCENT, jre.getMaxHeapPercent());
+
+ StringBuffer options = new StringBuffer();
+ if (jre.getOptions() != null && !jre.getOptions().isEmpty()) {
+ addSpace(options);
+ append(options, jre.getOptions(), " ");
+ }
+ addText(JVM_OPTIONS, options.toString());
+ }
+
+ private void addSplash(Splash splash) {
+ if (splash == null) {
+ return;
+ }
+ addTrue(SHOW_SPLASH, true);
+ addTrue(SPLASH_WAITS_FOR_WINDOW, splash.getWaitForWindow());
+ addText(SPLASH_TIMEOUT, String.valueOf(splash.getTimeout()));
+ addTrue(SPLASH_TIMEOUT_ERR, splash.isTimeoutErr());
+ addBitmap(SPLASH_BITMAP, splash.getFile());
+ }
+
+ private void addMessages(Config c) {
+ Msg msg = c.getMessages();
+ if (msg == null) {
+ msg = new Msg();
+ }
+ addText(STARTUP_ERR, msg.getStartupErr());
+ addText(BUNDLED_JRE_ERR, msg.getBundledJreErr());
+ addText(JRE_VERSION_ERR, msg.getJreVersionErr());
+ addText(LAUNCHER_ERR, msg.getLauncherErr());
+ if (c.getSingleInstance() != null) {
+ addText(INSTANCE_ALREADY_EXISTS_MSG, msg.getInstanceAlreadyExistsMsg());
+ }
+ }
+
+ private void append(StringBuffer sb, List list, String separator) {
+ for (int i = 0; i < list.size(); i++) {
+ sb.append(list.get(i));
+ if (i < list.size() - 1) {
+ sb.append(separator);
+ }
+ }
+ }
+
+ private void addText(int id, String text) {
+ if (text == null || text.equals("")) {
+ return;
+ }
+ _sb.append(id);
+ _sb.append(" RCDATA BEGIN \"");
+ _sb.append(escape(text));
+ _sb.append("\\0\" END\n");
+ }
+
+ private void addTrue(int id, boolean value) {
+ if (value) {
+ addText(id, "true");
+ }
+ }
+
+ private void addInteger(int id, Integer value) {
+ if (value != null) {
+ addText(id, value.toString());
+ }
+ }
+
+ /**
+ * Stores path in Windows format with '\' separators.
+ */
+ private void addWindowsPath(int id, String path) {
+ if (path == null || path.equals("")) {
+ return;
+ }
+ _sb.append(id);
+ _sb.append(" RCDATA BEGIN \"");
+ _sb.append(path.replaceAll("\\\\", "\\\\\\\\")
+ .replaceAll("/", "\\\\\\\\"));
+ _sb.append("\\0\" END\n");
+ }
+
+ private void addManifest(int id, File manifest) {
+ if (manifest == null || manifest.getPath().equals("")) {
+ return;
+ }
+ _sb.append(id);
+ _sb.append(" 24 \"");
+ _sb.append(getPath(Util.getAbsoluteFile(
+ ConfigPersister.getInstance().getConfigPath(), manifest)));
+ _sb.append("\"\n");
+ }
+
+ private void addIcon(int id, File icon) {
+ if (icon == null || icon.getPath().equals("")) {
+ return;
+ }
+ _sb.append(id);
+ _sb.append(" ICON DISCARDABLE \"");
+ _sb.append(getPath(Util.getAbsoluteFile(
+ ConfigPersister.getInstance().getConfigPath(), icon)));
+ _sb.append("\"\n");
+ }
+
+ private void addBitmap(int id, File bitmap) {
+ if (bitmap == null) {
+ return;
+ }
+ _sb.append(id);
+ _sb.append(" BITMAP \"");
+ _sb.append(getPath(Util.getAbsoluteFile(
+ ConfigPersister.getInstance().getConfigPath(), bitmap)));
+ _sb.append("\"\n");
+ }
+
+ private String getPath(File f) {
+ return f.getPath().replaceAll("\\\\", "\\\\\\\\");
+ }
+
+ private void addSpace(StringBuffer sb) {
+ int len = sb.length();
+ if (len-- > 0 && sb.charAt(len) != ' ') {
+ sb.append(' ');
+ }
+ }
+
+ private void addVerBlockValue(String key, String value) {
+ _sb.append(" VALUE \"");
+ _sb.append(key);
+ _sb.append("\", \"");
+ if (value != null) {
+ _sb.append(escape(value));
+ }
+ _sb.append("\"\n");
+ }
+
+ private String escape(String text) {
+ return text.replaceAll("\"", "\"\"");
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/Util.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/Util.java
old mode 100755
new mode 100644
index f3bf2456d6d..1a1fd7fb1c0
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/Util.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/Util.java
@@ -1,197 +1,197 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on 2005-04-24
- */
-package net.sf.launch4j;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.Reader;
-import java.io.Writer;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public class Util {
- public static final boolean WINDOWS_OS = System.getProperty("os.name")
- .toLowerCase().startsWith("windows");
-
- private Util() {}
-
- public static File createTempFile(String suffix) throws IOException {
- String tmpdir = System.getProperty("launch4j.tmpdir");
- if (tmpdir != null) {
- if (tmpdir.indexOf(' ') != -1) {
- throw new IOException(Messages.getString("Util.tmpdir"));
- }
- return File.createTempFile("launch4j", suffix, new File(tmpdir));
- } else {
- return File.createTempFile("launch4j", suffix);
- }
- }
-
- /**
- * Returns the base directory of a jar file or null if the class is a standalone file.
- * @return System specific path
- *
- * Based on a patch submitted by Josh Elsasser
- */
- public static File getJarBasedir() {
- String url = Util.class.getClassLoader()
- .getResource(Util.class.getName().replace('.', '/') + ".class")
- .getFile()
- .replaceAll("%20", " ");
- if (url.startsWith("file:")) {
- String jar = url.substring(5, url.lastIndexOf('!'));
- int x = jar.lastIndexOf('/');
- if (x == -1) {
- x = jar.lastIndexOf('\\');
- }
- String basedir = jar.substring(0, x + 1);
- return new File(basedir);
- } else {
- return new File(".");
- }
- }
-
- public static File getAbsoluteFile(File basepath, File f) {
- return f.isAbsolute() ? f : new File(basepath, f.getPath());
- }
-
- public static String getExtension(File f) {
- String name = f.getName();
- int x = name.lastIndexOf('.');
- if (x != -1) {
- return name.substring(x);
- } else {
- return "";
- }
- }
-
- public static void exec(String[] cmd, Log log) throws ExecException {
- BufferedReader is = null;
- try {
- if (WINDOWS_OS) {
- for (int i = 0; i < cmd.length; i++) {
- cmd[i] = cmd[i].replaceAll("/", "\\\\");
- }
- }
- Process p = Runtime.getRuntime().exec(cmd);
- is = new BufferedReader(new InputStreamReader(p.getErrorStream()));
- String line;
- int errLine = -1;
- Pattern pattern = Pattern.compile(":\\d+:");
- while ((line = is.readLine()) != null) {
- log.append(line);
- Matcher matcher = pattern.matcher(line);
- if (matcher.find()) {
- errLine = Integer.valueOf(
- line.substring(matcher.start() + 1, matcher.end() - 1))
- .intValue();
- if (line.matches("(?i).*unrecognized escape sequence")) {
- log.append(Messages.getString("Util.use.double.backslash"));
- }
- break;
- }
- }
- is.close();
- p.waitFor();
- if (errLine != -1) {
- throw new ExecException(Messages.getString("Util.exec.failed")
- + ": " + cmd, errLine);
- }
- if (p.exitValue() != 0) {
- throw new ExecException(Messages.getString("Util.exec.failed")
- + "(" + p.exitValue() + "): " + cmd);
- }
- } catch (IOException e) {
- close(is);
- throw new ExecException(e);
- } catch (InterruptedException e) {
- close(is);
- throw new ExecException(e);
- }
- }
-
- public static void close(final InputStream o) {
- if (o != null) {
- try {
- o.close();
- } catch (IOException e) {
- System.err.println(e); // XXX log
- }
- }
- }
-
- public static void close(final OutputStream o) {
- if (o != null) {
- try {
- o.close();
- } catch (IOException e) {
- System.err.println(e); // XXX log
- }
- }
- }
-
- public static void close(final Reader o) {
- if (o != null) {
- try {
- o.close();
- } catch (IOException e) {
- System.err.println(e); // XXX log
- }
- }
- }
-
- public static void close(final Writer o) {
- if (o != null) {
- try {
- o.close();
- } catch (IOException e) {
- System.err.println(e); // XXX log
- }
- }
- }
-
- public static boolean delete(File f) {
- return (f != null) ? f.delete() : false;
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on 2005-04-24
+ */
+package net.sf.launch4j;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.Writer;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class Util {
+ public static final boolean WINDOWS_OS = System.getProperty("os.name")
+ .toLowerCase().startsWith("windows");
+
+ private Util() {}
+
+ public static File createTempFile(String suffix) throws IOException {
+ String tmpdir = System.getProperty("launch4j.tmpdir");
+ if (tmpdir != null) {
+ if (tmpdir.indexOf(' ') != -1) {
+ throw new IOException(Messages.getString("Util.tmpdir"));
+ }
+ return File.createTempFile("launch4j", suffix, new File(tmpdir));
+ } else {
+ return File.createTempFile("launch4j", suffix);
+ }
+ }
+
+ /**
+ * Returns the base directory of a jar file or null if the class is a standalone file.
+ * @return System specific path
+ *
+ * Based on a patch submitted by Josh Elsasser
+ */
+ public static File getJarBasedir() {
+ String url = Util.class.getClassLoader()
+ .getResource(Util.class.getName().replace('.', '/') + ".class")
+ .getFile()
+ .replaceAll("%20", " ");
+ if (url.startsWith("file:")) {
+ String jar = url.substring(5, url.lastIndexOf('!'));
+ int x = jar.lastIndexOf('/');
+ if (x == -1) {
+ x = jar.lastIndexOf('\\');
+ }
+ String basedir = jar.substring(0, x + 1);
+ return new File(basedir);
+ } else {
+ return new File(".");
+ }
+ }
+
+ public static File getAbsoluteFile(File basepath, File f) {
+ return f.isAbsolute() ? f : new File(basepath, f.getPath());
+ }
+
+ public static String getExtension(File f) {
+ String name = f.getName();
+ int x = name.lastIndexOf('.');
+ if (x != -1) {
+ return name.substring(x);
+ } else {
+ return "";
+ }
+ }
+
+ public static void exec(String[] cmd, Log log) throws ExecException {
+ BufferedReader is = null;
+ try {
+ if (WINDOWS_OS) {
+ for (int i = 0; i < cmd.length; i++) {
+ cmd[i] = cmd[i].replaceAll("/", "\\\\");
+ }
+ }
+ Process p = Runtime.getRuntime().exec(cmd);
+ is = new BufferedReader(new InputStreamReader(p.getErrorStream()));
+ String line;
+ int errLine = -1;
+ Pattern pattern = Pattern.compile(":\\d+:");
+ while ((line = is.readLine()) != null) {
+ log.append(line);
+ Matcher matcher = pattern.matcher(line);
+ if (matcher.find()) {
+ errLine = Integer.valueOf(
+ line.substring(matcher.start() + 1, matcher.end() - 1))
+ .intValue();
+ if (line.matches("(?i).*unrecognized escape sequence")) {
+ log.append(Messages.getString("Util.use.double.backslash"));
+ }
+ break;
+ }
+ }
+ is.close();
+ p.waitFor();
+ if (errLine != -1) {
+ throw new ExecException(Messages.getString("Util.exec.failed")
+ + ": " + cmd, errLine);
+ }
+ if (p.exitValue() != 0) {
+ throw new ExecException(Messages.getString("Util.exec.failed")
+ + "(" + p.exitValue() + "): " + cmd);
+ }
+ } catch (IOException e) {
+ close(is);
+ throw new ExecException(e);
+ } catch (InterruptedException e) {
+ close(is);
+ throw new ExecException(e);
+ }
+ }
+
+ public static void close(final InputStream o) {
+ if (o != null) {
+ try {
+ o.close();
+ } catch (IOException e) {
+ System.err.println(e); // XXX log
+ }
+ }
+ }
+
+ public static void close(final OutputStream o) {
+ if (o != null) {
+ try {
+ o.close();
+ } catch (IOException e) {
+ System.err.println(e); // XXX log
+ }
+ }
+ }
+
+ public static void close(final Reader o) {
+ if (o != null) {
+ try {
+ o.close();
+ } catch (IOException e) {
+ System.err.println(e); // XXX log
+ }
+ }
+ }
+
+ public static void close(final Writer o) {
+ if (o != null) {
+ try {
+ o.close();
+ } catch (IOException e) {
+ System.err.println(e); // XXX log
+ }
+ }
+ }
+
+ public static boolean delete(File f) {
+ return (f != null) ? f.delete() : false;
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/AntClassPath.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/AntClassPath.java
old mode 100755
new mode 100644
index a67bab91f61..ba5f7d74d38
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/AntClassPath.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/AntClassPath.java
@@ -1,61 +1,61 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on Jul 19, 2006
- */
-package net.sf.launch4j.ant;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import net.sf.launch4j.config.ClassPath;
-
-/**
- * @author Copyright (C) 2006 Grzegorz Kowal
- */
-public class AntClassPath extends ClassPath {
- private final List wrappedPaths = new ArrayList();
-
- public void setCp(String cp){
- wrappedPaths.add(cp);
- }
-
- public void addCp(StringWrapper cp) {
- wrappedPaths.add(cp);
- }
-
- public void unwrap() {
- setPaths(StringWrapper.unwrap(wrappedPaths));
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on Jul 19, 2006
+ */
+package net.sf.launch4j.ant;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import net.sf.launch4j.config.ClassPath;
+
+/**
+ * @author Copyright (C) 2006 Grzegorz Kowal
+ */
+public class AntClassPath extends ClassPath {
+ private final List wrappedPaths = new ArrayList();
+
+ public void setCp(String cp){
+ wrappedPaths.add(cp);
+ }
+
+ public void addCp(StringWrapper cp) {
+ wrappedPaths.add(cp);
+ }
+
+ public void unwrap() {
+ setPaths(StringWrapper.unwrap(wrappedPaths));
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/AntConfig.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/AntConfig.java
old mode 100755
new mode 100644
index 4482436a90c..26e6c340f35
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/AntConfig.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/AntConfig.java
@@ -1,129 +1,129 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on May 24, 2005
- */
-package net.sf.launch4j.ant;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.tools.ant.BuildException;
-
-import net.sf.launch4j.config.Config;
-import net.sf.launch4j.config.Msg;
-import net.sf.launch4j.config.SingleInstance;
-import net.sf.launch4j.config.Splash;
-import net.sf.launch4j.config.VersionInfo;
-
-/**
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public class AntConfig extends Config {
- private final List wrappedHeaderObjects = new ArrayList();
- private final List wrappedLibs = new ArrayList();
- private final List wrappedVariables = new ArrayList();
-
- public void setJarPath(String path) {
- setJar(new File(path));
- }
-
- public void addObj(StringWrapper obj) {
- wrappedHeaderObjects.add(obj);
- }
-
- public void addLib(StringWrapper lib) {
- wrappedLibs.add(lib);
- }
-
- public void addVar(StringWrapper var) {
- wrappedVariables.add(var);
- }
-
- // __________________________________________________________________________________
-
- public void addSingleInstance(SingleInstance singleInstance) {
- checkNull(getSingleInstance(), "singleInstance");
- setSingleInstance(singleInstance);
- }
-
- public void addClassPath(AntClassPath classPath) {
- checkNull(getClassPath(), "classPath");
- setClassPath(classPath);
- }
-
- public void addJre(AntJre jre) {
- checkNull(getJre(), "jre");
- setJre(jre);
- }
-
- public void addSplash(Splash splash) {
- checkNull(getSplash(), "splash");
- setSplash(splash);
- }
-
- public void addVersionInfo(VersionInfo versionInfo) {
- checkNull(getVersionInfo(), "versionInfo");
- setVersionInfo(versionInfo);
- }
-
- public void addMessages(Msg messages) {
- checkNull(getMessages(), "messages");
- setMessages(messages);
- }
-
- // __________________________________________________________________________________
-
- public void unwrap() {
- setHeaderObjects(StringWrapper.unwrap(wrappedHeaderObjects));
- setLibs(StringWrapper.unwrap(wrappedLibs));
- setVariables(StringWrapper.unwrap(wrappedVariables));
- if (getClassPath() != null) {
- ((AntClassPath) getClassPath()).unwrap();
- }
- if (getJre() != null) {
- ((AntJre) getJre()).unwrap();
- }
- }
-
- private void checkNull(Object o, String name) {
- if (o != null) {
- throw new BuildException(
- Messages.getString("AntConfig.duplicate.element")
- + ": "
- + name);
- }
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on May 24, 2005
+ */
+package net.sf.launch4j.ant;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.tools.ant.BuildException;
+
+import net.sf.launch4j.config.Config;
+import net.sf.launch4j.config.Msg;
+import net.sf.launch4j.config.SingleInstance;
+import net.sf.launch4j.config.Splash;
+import net.sf.launch4j.config.VersionInfo;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class AntConfig extends Config {
+ private final List wrappedHeaderObjects = new ArrayList();
+ private final List wrappedLibs = new ArrayList();
+ private final List wrappedVariables = new ArrayList();
+
+ public void setJarPath(String path) {
+ setJar(new File(path));
+ }
+
+ public void addObj(StringWrapper obj) {
+ wrappedHeaderObjects.add(obj);
+ }
+
+ public void addLib(StringWrapper lib) {
+ wrappedLibs.add(lib);
+ }
+
+ public void addVar(StringWrapper var) {
+ wrappedVariables.add(var);
+ }
+
+ // __________________________________________________________________________________
+
+ public void addSingleInstance(SingleInstance singleInstance) {
+ checkNull(getSingleInstance(), "singleInstance");
+ setSingleInstance(singleInstance);
+ }
+
+ public void addClassPath(AntClassPath classPath) {
+ checkNull(getClassPath(), "classPath");
+ setClassPath(classPath);
+ }
+
+ public void addJre(AntJre jre) {
+ checkNull(getJre(), "jre");
+ setJre(jre);
+ }
+
+ public void addSplash(Splash splash) {
+ checkNull(getSplash(), "splash");
+ setSplash(splash);
+ }
+
+ public void addVersionInfo(VersionInfo versionInfo) {
+ checkNull(getVersionInfo(), "versionInfo");
+ setVersionInfo(versionInfo);
+ }
+
+ public void addMessages(Msg messages) {
+ checkNull(getMessages(), "messages");
+ setMessages(messages);
+ }
+
+ // __________________________________________________________________________________
+
+ public void unwrap() {
+ setHeaderObjects(StringWrapper.unwrap(wrappedHeaderObjects));
+ setLibs(StringWrapper.unwrap(wrappedLibs));
+ setVariables(StringWrapper.unwrap(wrappedVariables));
+ if (getClassPath() != null) {
+ ((AntClassPath) getClassPath()).unwrap();
+ }
+ if (getJre() != null) {
+ ((AntJre) getJre()).unwrap();
+ }
+ }
+
+ private void checkNull(Object o, String name) {
+ if (o != null) {
+ throw new BuildException(
+ Messages.getString("AntConfig.duplicate.element")
+ + ": "
+ + name);
+ }
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/AntJre.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/AntJre.java
old mode 100755
new mode 100644
index b83e3ee02be..27c1bbf3175
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/AntJre.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/AntJre.java
@@ -1,69 +1,69 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on Jul 18, 2006
- */
-package net.sf.launch4j.ant;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import net.sf.launch4j.config.Jre;
-
-/**
- * @author Copyright (C) 2006 Grzegorz Kowal
- */
-public class AntJre extends Jre {
- private final List wrappedOptions = new ArrayList();
-
- public void addOpt(StringWrapper opt) {
- wrappedOptions.add(opt);
- }
-
- public void unwrap() {
- setOptions(StringWrapper.unwrap(wrappedOptions));
- }
-
- /**
- * For backwards compatibility.
- */
- public void setDontUsePrivateJres(boolean dontUse) {
- if (dontUse) {
- setJdkPreference(JDK_PREFERENCE_JRE_ONLY);
- }
- else {
- setJdkPreference(JDK_PREFERENCE_PREFER_JRE);
- }
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on Jul 18, 2006
+ */
+package net.sf.launch4j.ant;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import net.sf.launch4j.config.Jre;
+
+/**
+ * @author Copyright (C) 2006 Grzegorz Kowal
+ */
+public class AntJre extends Jre {
+ private final List wrappedOptions = new ArrayList();
+
+ public void addOpt(StringWrapper opt) {
+ wrappedOptions.add(opt);
+ }
+
+ public void unwrap() {
+ setOptions(StringWrapper.unwrap(wrappedOptions));
+ }
+
+ /**
+ * For backwards compatibility.
+ */
+ public void setDontUsePrivateJres(boolean dontUse) {
+ if (dontUse) {
+ setJdkPreference(JDK_PREFERENCE_JRE_ONLY);
+ }
+ else {
+ setJdkPreference(JDK_PREFERENCE_PREFER_JRE);
+ }
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/Launch4jTask.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/Launch4jTask.java
old mode 100755
new mode 100644
index a28287698f8..65dc3fafa70
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/Launch4jTask.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/Launch4jTask.java
@@ -1,162 +1,162 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on May 24, 2005
- */
-package net.sf.launch4j.ant;
-
-import java.io.File;
-
-import net.sf.launch4j.Builder;
-import net.sf.launch4j.BuilderException;
-import net.sf.launch4j.Log;
-import net.sf.launch4j.config.Config;
-import net.sf.launch4j.config.ConfigPersister;
-import net.sf.launch4j.config.ConfigPersisterException;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Task;
-
-/**
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public class Launch4jTask extends Task {
- private File _configFile;
- private AntConfig _config;
-
- // System properties
- private File tmpdir; // launch4j.tmpdir
- private File bindir; // launch4j.bindir
-
- // Override configFile settings
- private File jar;
- private File outfile;
- private String fileVersion;
- private String txtFileVersion;
- private String productVersion;
- private String txtProductVersion;
-
- public void execute() throws BuildException {
- try {
- if (tmpdir != null) {
- System.setProperty("launch4j.tmpdir", tmpdir.getPath());
- }
- if (bindir != null) {
- System.setProperty("launch4j.bindir", bindir.getPath());
- }
- if (_configFile != null && _config != null) {
- throw new BuildException(
- Messages.getString("Launch4jTask.specify.config"));
- } else if (_configFile != null) {
- ConfigPersister.getInstance().load(_configFile);
- Config c = ConfigPersister.getInstance().getConfig();
- if (jar != null) {
- c.setJar(jar);
- }
- if (outfile != null) {
- c.setOutfile(outfile);
- }
- if (fileVersion != null) {
- c.getVersionInfo().setFileVersion(fileVersion);
- }
- if (txtFileVersion != null) {
- c.getVersionInfo().setTxtFileVersion(txtFileVersion);
- }
- if (productVersion != null) {
- c.getVersionInfo().setProductVersion(productVersion);
- }
- if (txtProductVersion != null) {
- c.getVersionInfo().setTxtProductVersion(txtProductVersion);
- }
- } else if (_config != null) {
- _config.unwrap();
- ConfigPersister.getInstance().setAntConfig(_config,
- getProject().getBaseDir());
- } else {
- throw new BuildException(
- Messages.getString("Launch4jTask.specify.config"));
- }
- final Builder b = new Builder(Log.getAntLog());
- b.build();
- } catch (ConfigPersisterException e) {
- throw new BuildException(e);
- } catch (BuilderException e) {
- throw new BuildException(e);
- }
- }
-
- public void setConfigFile(File configFile) {
- _configFile = configFile;
- }
-
- public void addConfig(AntConfig config) {
- _config = config;
- }
-
- public void setBindir(File bindir) {
- this.bindir = bindir;
- }
-
- public void setTmpdir(File tmpdir) {
- this.tmpdir = tmpdir;
- }
-
- public void setFileVersion(String fileVersion) {
- this.fileVersion = fileVersion;
- }
-
- public void setJar(File jar) {
- this.jar = jar;
- }
-
- public void setJarPath(String path) {
- this.jar = new File(path);
- }
-
- public void setOutfile(File outfile) {
- this.outfile = outfile;
- }
-
- public void setProductVersion(String productVersion) {
- this.productVersion = productVersion;
- }
-
- public void setTxtFileVersion(String txtFileVersion) {
- this.txtFileVersion = txtFileVersion;
- }
-
- public void setTxtProductVersion(String txtProductVersion) {
- this.txtProductVersion = txtProductVersion;
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on May 24, 2005
+ */
+package net.sf.launch4j.ant;
+
+import java.io.File;
+
+import net.sf.launch4j.Builder;
+import net.sf.launch4j.BuilderException;
+import net.sf.launch4j.Log;
+import net.sf.launch4j.config.Config;
+import net.sf.launch4j.config.ConfigPersister;
+import net.sf.launch4j.config.ConfigPersisterException;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class Launch4jTask extends Task {
+ private File _configFile;
+ private AntConfig _config;
+
+ // System properties
+ private File tmpdir; // launch4j.tmpdir
+ private File bindir; // launch4j.bindir
+
+ // Override configFile settings
+ private File jar;
+ private File outfile;
+ private String fileVersion;
+ private String txtFileVersion;
+ private String productVersion;
+ private String txtProductVersion;
+
+ public void execute() throws BuildException {
+ try {
+ if (tmpdir != null) {
+ System.setProperty("launch4j.tmpdir", tmpdir.getPath());
+ }
+ if (bindir != null) {
+ System.setProperty("launch4j.bindir", bindir.getPath());
+ }
+ if (_configFile != null && _config != null) {
+ throw new BuildException(
+ Messages.getString("Launch4jTask.specify.config"));
+ } else if (_configFile != null) {
+ ConfigPersister.getInstance().load(_configFile);
+ Config c = ConfigPersister.getInstance().getConfig();
+ if (jar != null) {
+ c.setJar(jar);
+ }
+ if (outfile != null) {
+ c.setOutfile(outfile);
+ }
+ if (fileVersion != null) {
+ c.getVersionInfo().setFileVersion(fileVersion);
+ }
+ if (txtFileVersion != null) {
+ c.getVersionInfo().setTxtFileVersion(txtFileVersion);
+ }
+ if (productVersion != null) {
+ c.getVersionInfo().setProductVersion(productVersion);
+ }
+ if (txtProductVersion != null) {
+ c.getVersionInfo().setTxtProductVersion(txtProductVersion);
+ }
+ } else if (_config != null) {
+ _config.unwrap();
+ ConfigPersister.getInstance().setAntConfig(_config,
+ getProject().getBaseDir());
+ } else {
+ throw new BuildException(
+ Messages.getString("Launch4jTask.specify.config"));
+ }
+ final Builder b = new Builder(Log.getAntLog());
+ b.build();
+ } catch (ConfigPersisterException e) {
+ throw new BuildException(e);
+ } catch (BuilderException e) {
+ throw new BuildException(e);
+ }
+ }
+
+ public void setConfigFile(File configFile) {
+ _configFile = configFile;
+ }
+
+ public void addConfig(AntConfig config) {
+ _config = config;
+ }
+
+ public void setBindir(File bindir) {
+ this.bindir = bindir;
+ }
+
+ public void setTmpdir(File tmpdir) {
+ this.tmpdir = tmpdir;
+ }
+
+ public void setFileVersion(String fileVersion) {
+ this.fileVersion = fileVersion;
+ }
+
+ public void setJar(File jar) {
+ this.jar = jar;
+ }
+
+ public void setJarPath(String path) {
+ this.jar = new File(path);
+ }
+
+ public void setOutfile(File outfile) {
+ this.outfile = outfile;
+ }
+
+ public void setProductVersion(String productVersion) {
+ this.productVersion = productVersion;
+ }
+
+ public void setTxtFileVersion(String txtFileVersion) {
+ this.txtFileVersion = txtFileVersion;
+ }
+
+ public void setTxtProductVersion(String txtProductVersion) {
+ this.txtProductVersion = txtProductVersion;
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/Messages.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/Messages.java
old mode 100755
new mode 100644
index 0f823f7af7c..ec0b6d38c2a
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/Messages.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/Messages.java
@@ -1,55 +1,55 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package net.sf.launch4j.ant;
-
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-public class Messages {
- private static final String BUNDLE_NAME = "net.sf.launch4j.ant.messages";
-
- private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
- .getBundle(BUNDLE_NAME);
-
- private Messages() {
- }
-
- public static String getString(String key) {
- try {
- return RESOURCE_BUNDLE.getString(key);
- } catch (MissingResourceException e) {
- return '!' + key + '!';
- }
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+package net.sf.launch4j.ant;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+public class Messages {
+ private static final String BUNDLE_NAME = "net.sf.launch4j.ant.messages";
+
+ private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
+ .getBundle(BUNDLE_NAME);
+
+ private Messages() {
+ }
+
+ public static String getString(String key) {
+ try {
+ return RESOURCE_BUNDLE.getString(key);
+ } catch (MissingResourceException e) {
+ return '!' + key + '!';
+ }
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/StringWrapper.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/StringWrapper.java
old mode 100755
new mode 100644
index 6d38af1a595..48cd0c91970
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/StringWrapper.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/StringWrapper.java
@@ -1,67 +1,67 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on Jul 18, 2006
- */
-package net.sf.launch4j.ant;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * @author Copyright (C) 2006 Grzegorz Kowal
- */
-public class StringWrapper {
- private String text;
-
- public static List unwrap(List wrappers) {
- if (wrappers.isEmpty()) {
- return null;
- }
- List strings = new ArrayList(wrappers.size());
- for (Iterator iter = wrappers.iterator(); iter.hasNext();) {
- strings.add(iter.next().toString());
- }
- return strings;
- }
-
- public void addText(String text) {
- this.text = text;
- }
-
- public String toString() {
- return text;
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on Jul 18, 2006
+ */
+package net.sf.launch4j.ant;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * @author Copyright (C) 2006 Grzegorz Kowal
+ */
+public class StringWrapper {
+ private String text;
+
+ public static List unwrap(List wrappers) {
+ if (wrappers.isEmpty()) {
+ return null;
+ }
+ List strings = new ArrayList(wrappers.size());
+ for (Iterator iter = wrappers.iterator(); iter.hasNext();) {
+ strings.add(iter.next().toString());
+ }
+ return strings;
+ }
+
+ public void addText(String text) {
+ this.text = text;
+ }
+
+ public String toString() {
+ return text;
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/messages.properties b/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/messages.properties
old mode 100755
new mode 100644
index 9666633c2b5..c1b802f528b
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/messages.properties
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/messages.properties
@@ -1,35 +1,35 @@
-#
-# Launch4j (http://launch4j.sourceforge.net/)
-# Cross-platform Java application wrapper for creating Windows native executables.
-#
-# Copyright (c) 2004, 2007 Grzegorz Kowal
-#
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without modification,
-# are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-# this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-# this list of conditions and the following disclaimer in the documentation
-# and/or other materials provided with the distribution.
-# * Neither the name of the Launch4j nor the names of its contributors
-# may be used to endorse or promote products derived from this software without
-# specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-
-Launch4jTask.specify.config=Specify configFile or config
-AntConfig.duplicate.element=Duplicate element
+#
+# Launch4j (http://launch4j.sourceforge.net/)
+# Cross-platform Java application wrapper for creating Windows native executables.
+#
+# Copyright (c) 2004, 2007 Grzegorz Kowal
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification,
+# are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Launch4j nor the names of its contributors
+# may be used to endorse or promote products derived from this software without
+# specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+Launch4jTask.specify.config=Specify configFile or config
+AntConfig.duplicate.element=Duplicate element
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/messages_es.properties b/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/messages_es.properties
old mode 100755
new mode 100644
index 9211e8e034a..783874a8f0f
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/messages_es.properties
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/ant/messages_es.properties
@@ -1,35 +1,35 @@
-#
-# Launch4j (http://launch4j.sourceforge.net/)
-# Cross-platform Java application wrapper for creating Windows native executables.
-#
-# Copyright (c) 2004, 2007 Grzegorz Kowal, Patricio Mart�nez Ros
-#
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without modification,
-# are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-# this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-# this list of conditions and the following disclaimer in the documentation
-# and/or other materials provided with the distribution.
-# * Neither the name of the Launch4j nor the names of its contributors
-# may be used to endorse or promote products derived from this software without
-# specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-
-Launch4jTask.specify.config=Specify configFile or config
-AntConfig.duplicate.element=Duplicate element
+#
+# Launch4j (http://launch4j.sourceforge.net/)
+# Cross-platform Java application wrapper for creating Windows native executables.
+#
+# Copyright (c) 2004, 2007 Grzegorz Kowal, Patricio Mart�nez Ros
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification,
+# are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Launch4j nor the names of its contributors
+# may be used to endorse or promote products derived from this software without
+# specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+Launch4jTask.specify.config=Specify configFile or config
+AntConfig.duplicate.element=Duplicate element
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/Binding.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/Binding.java
old mode 100755
new mode 100644
index 49c9b45ffc7..cd93384cd93
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/Binding.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/Binding.java
@@ -1,62 +1,62 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on Apr 30, 2005
- */
-package net.sf.launch4j.binding;
-
-import java.awt.Color;
-
-/**
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public interface Binding {
- /** Used to mark components with invalid data. */
- public final static Color INVALID_COLOR = Color.PINK;
-
- /** Java Bean property bound to a component */
- public String getProperty();
- /** Clear component, set it to the default value */
- public void clear(IValidatable bean);
- /** Java Bean property -> Component */
- public void put(IValidatable bean);
- /** Component -> Java Bean property */
- public void get(IValidatable bean);
- /** Mark component as valid */
- public void markValid();
- /** Mark component as invalid */
- public void markInvalid();
- /** Enable or disable the component */
- public void setEnabled(boolean enabled);
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on Apr 30, 2005
+ */
+package net.sf.launch4j.binding;
+
+import java.awt.Color;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public interface Binding {
+ /** Used to mark components with invalid data. */
+ public final static Color INVALID_COLOR = Color.PINK;
+
+ /** Java Bean property bound to a component */
+ public String getProperty();
+ /** Clear component, set it to the default value */
+ public void clear(IValidatable bean);
+ /** Java Bean property -> Component */
+ public void put(IValidatable bean);
+ /** Component -> Java Bean property */
+ public void get(IValidatable bean);
+ /** Mark component as valid */
+ public void markValid();
+ /** Mark component as invalid */
+ public void markInvalid();
+ /** Enable or disable the component */
+ public void setEnabled(boolean enabled);
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/BindingException.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/BindingException.java
old mode 100755
new mode 100644
index 15dc10cc002..3199ab4d122
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/BindingException.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/BindingException.java
@@ -1,52 +1,52 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on Apr 30, 2005
- */
-package net.sf.launch4j.binding;
-
-/**
- * Signals a runtime error, a missing property in a Java Bean for example.
- *
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public class BindingException extends RuntimeException {
- public BindingException(Throwable t) {
- super(t);
- }
-
- public BindingException(String msg) {
- super(msg);
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on Apr 30, 2005
+ */
+package net.sf.launch4j.binding;
+
+/**
+ * Signals a runtime error, a missing property in a Java Bean for example.
+ *
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class BindingException extends RuntimeException {
+ public BindingException(Throwable t) {
+ super(t);
+ }
+
+ public BindingException(String msg) {
+ super(msg);
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/Bindings.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/Bindings.java
old mode 100755
new mode 100644
index 73f507e4999..8fe6bdf9641
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/Bindings.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/Bindings.java
@@ -1,317 +1,317 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on Apr 30, 2005
- */
-package net.sf.launch4j.binding;
-
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import javax.swing.JComboBox;
-import javax.swing.JComponent;
-import javax.swing.JList;
-import javax.swing.JRadioButton;
-import javax.swing.JTextArea;
-import javax.swing.JToggleButton;
-import javax.swing.text.JTextComponent;
-
-import org.apache.commons.beanutils.PropertyUtils;
-
-/**
- * Creates and handles bindings.
- *
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public class Bindings implements PropertyChangeListener {
- private final Map _bindings = new HashMap();
- private final Map _optComponents = new HashMap();
- private boolean _modified = false;
-
- /**
- * Used to track component modifications.
- */
- public void propertyChange(PropertyChangeEvent evt) {
- String prop = evt.getPropertyName();
- if ("AccessibleValue".equals(prop)
- || "AccessibleText".equals(prop)
- || "AccessibleVisibleData".equals(prop)) {
- _modified = true;
- }
- }
-
- /**
- * Any of the components modified?
- */
- public boolean isModified() {
- return _modified;
- }
-
- public Binding getBinding(String property) {
- return (Binding) _bindings.get(property);
- }
-
- private void registerPropertyChangeListener(JComponent c) {
- c.getAccessibleContext().addPropertyChangeListener(this);
- }
-
- private void registerPropertyChangeListener(JComponent[] cs) {
- for (int i = 0; i < cs.length; i++) {
- cs[i].getAccessibleContext().addPropertyChangeListener(this);
- }
- }
-
- private boolean isPropertyNull(IValidatable bean, Binding b) {
- try {
- for (Iterator iter = _optComponents.keySet().iterator(); iter.hasNext();) {
- String property = (String) iter.next();
- if (b.getProperty().startsWith(property)) {
- return PropertyUtils.getProperty(bean, property) == null;
- }
- }
- return false;
- } catch (Exception e) {
- throw new BindingException(e);
- }
- }
-
- /**
- * Enables or disables all components bound to properties that begin with given prefix.
- */
- public void setComponentsEnabled(String prefix, boolean enabled) {
- for (Iterator iter = _bindings.values().iterator(); iter.hasNext();) {
- Binding b = (Binding) iter.next();
- if (b.getProperty().startsWith(prefix)) {
- b.setEnabled(enabled);
- }
- }
- }
-
- /**
- * Clear all components, set them to their default values.
- * Clears the _modified flag.
- */
- public void clear(IValidatable bean) {
- for (Iterator iter = _optComponents.values().iterator(); iter.hasNext();) {
- ((Binding) iter.next()).clear(bean);
- }
- for (Iterator iter = _bindings.values().iterator(); iter.hasNext();) {
- ((Binding) iter.next()).clear(bean);
- }
- _modified = false;
- }
-
- /**
- * Copies data from the Java Bean to the UI components.
- * Clears the _modified flag.
- */
- public void put(IValidatable bean) {
- for (Iterator iter = _optComponents.values().iterator(); iter.hasNext();) {
- ((Binding) iter.next()).put(bean);
- }
- for (Iterator iter = _bindings.values().iterator(); iter.hasNext();) {
- Binding b = (Binding) iter.next();
- if (isPropertyNull(bean, b)) {
- b.clear(null);
- } else {
- b.put(bean);
- }
- }
- _modified = false;
- }
-
- /**
- * Copies data from UI components to the Java Bean and checks it's class invariants.
- * Clears the _modified flag.
- * @throws InvariantViolationException
- * @throws BindingException
- */
- public void get(IValidatable bean) {
- try {
- for (Iterator iter = _optComponents.values().iterator(); iter.hasNext();) {
- ((Binding) iter.next()).get(bean);
- }
- for (Iterator iter = _bindings.values().iterator(); iter.hasNext();) {
- Binding b = (Binding) iter.next();
- if (!isPropertyNull(bean, b)) {
- b.get(bean);
- }
- }
- bean.checkInvariants();
- for (Iterator iter = _optComponents.keySet().iterator(); iter.hasNext();) {
- String property = (String) iter.next();
- IValidatable component = (IValidatable) PropertyUtils.getProperty(bean,
- property);
- if (component != null) {
- component.checkInvariants();
- }
- }
- _modified = false; // XXX
- } catch (InvariantViolationException e) {
- e.setBinding(getBinding(e.getProperty()));
- throw e;
- } catch (Exception e) {
- throw new BindingException(e);
- }
- }
-
- private Bindings add(Binding b) {
- if (_bindings.containsKey(b.getProperty())) {
- throw new BindingException(Messages.getString("Bindings.duplicate.binding"));
- }
- _bindings.put(b.getProperty(), b);
- return this;
- }
-
- /**
- * Add an optional (nullable) Java Bean component of type clazz.
- */
- public Bindings addOptComponent(String property, Class clazz, JToggleButton c,
- boolean enabledByDefault) {
- Binding b = new OptComponentBinding(this, property, clazz, c, enabledByDefault);
- if (_optComponents.containsKey(property)) {
- throw new BindingException(Messages.getString("Bindings.duplicate.binding"));
- }
- _optComponents.put(property, b);
- return this;
- }
-
- /**
- * Add an optional (nullable) Java Bean component of type clazz.
- */
- public Bindings addOptComponent(String property, Class clazz, JToggleButton c) {
- return addOptComponent(property, clazz, c, false);
- }
-
- /**
- * Handles JEditorPane, JTextArea, JTextField
- */
- public Bindings add(String property, JTextComponent c, String defaultValue) {
- registerPropertyChangeListener(c);
- return add(new JTextComponentBinding(property, c, defaultValue));
- }
-
- /**
- * Handles JEditorPane, JTextArea, JTextField
- */
- public Bindings add(String property, JTextComponent c) {
- registerPropertyChangeListener(c);
- return add(new JTextComponentBinding(property, c, ""));
- }
-
- /**
- * Handles JToggleButton, JCheckBox
- */
- public Bindings add(String property, JToggleButton c, boolean defaultValue) {
- registerPropertyChangeListener(c);
- return add(new JToggleButtonBinding(property, c, defaultValue));
- }
-
- /**
- * Handles JToggleButton, JCheckBox
- */
- public Bindings add(String property, JToggleButton c) {
- registerPropertyChangeListener(c);
- return add(new JToggleButtonBinding(property, c, false));
- }
-
- /**
- * Handles JRadioButton
- */
- public Bindings add(String property, JRadioButton[] cs, int defaultValue) {
- registerPropertyChangeListener(cs);
- return add(new JRadioButtonBinding(property, cs, defaultValue));
- }
-
- /**
- * Handles JRadioButton
- */
- public Bindings add(String property, JRadioButton[] cs) {
- registerPropertyChangeListener(cs);
- return add(new JRadioButtonBinding(property, cs, 0));
- }
-
- /**
- * Handles JTextArea
- */
- public Bindings add(String property, JTextArea textArea, String defaultValue) {
- registerPropertyChangeListener(textArea);
- return add(new JTextComponentBinding(property, textArea, defaultValue));
- }
-
- /**
- * Handles JTextArea lists
- */
- public Bindings add(String property, JTextArea textArea) {
- registerPropertyChangeListener(textArea);
- return add(new JTextAreaBinding(property, textArea));
- }
-
- /**
- * Handles Optional JTextArea lists
- */
- public Bindings add(String property, String stateProperty,
- JToggleButton button, JTextArea textArea) {
- registerPropertyChangeListener(button);
- registerPropertyChangeListener(textArea);
- return add(new OptJTextAreaBinding(property, stateProperty, button, textArea));
- }
-
- /**
- * Handles JList
- */
- public Bindings add(String property, JList list) {
- registerPropertyChangeListener(list);
- return add(new JListBinding(property, list));
- }
-
- /**
- * Handles JComboBox
- */
- public Bindings add(String property, JComboBox combo, int defaultValue) {
- registerPropertyChangeListener(combo);
- return add(new JComboBoxBinding(property, combo, defaultValue));
- }
-
- /**
- * Handles JComboBox
- */
- public Bindings add(String property, JComboBox combo) {
- registerPropertyChangeListener(combo);
- return add(new JComboBoxBinding(property, combo, 0));
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on Apr 30, 2005
+ */
+package net.sf.launch4j.binding;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import javax.swing.JComboBox;
+import javax.swing.JComponent;
+import javax.swing.JList;
+import javax.swing.JRadioButton;
+import javax.swing.JTextArea;
+import javax.swing.JToggleButton;
+import javax.swing.text.JTextComponent;
+
+import org.apache.commons.beanutils.PropertyUtils;
+
+/**
+ * Creates and handles bindings.
+ *
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class Bindings implements PropertyChangeListener {
+ private final Map _bindings = new HashMap();
+ private final Map _optComponents = new HashMap();
+ private boolean _modified = false;
+
+ /**
+ * Used to track component modifications.
+ */
+ public void propertyChange(PropertyChangeEvent evt) {
+ String prop = evt.getPropertyName();
+ if ("AccessibleValue".equals(prop)
+ || "AccessibleText".equals(prop)
+ || "AccessibleVisibleData".equals(prop)) {
+ _modified = true;
+ }
+ }
+
+ /**
+ * Any of the components modified?
+ */
+ public boolean isModified() {
+ return _modified;
+ }
+
+ public Binding getBinding(String property) {
+ return (Binding) _bindings.get(property);
+ }
+
+ private void registerPropertyChangeListener(JComponent c) {
+ c.getAccessibleContext().addPropertyChangeListener(this);
+ }
+
+ private void registerPropertyChangeListener(JComponent[] cs) {
+ for (int i = 0; i < cs.length; i++) {
+ cs[i].getAccessibleContext().addPropertyChangeListener(this);
+ }
+ }
+
+ private boolean isPropertyNull(IValidatable bean, Binding b) {
+ try {
+ for (Iterator iter = _optComponents.keySet().iterator(); iter.hasNext();) {
+ String property = (String) iter.next();
+ if (b.getProperty().startsWith(property)) {
+ return PropertyUtils.getProperty(bean, property) == null;
+ }
+ }
+ return false;
+ } catch (Exception e) {
+ throw new BindingException(e);
+ }
+ }
+
+ /**
+ * Enables or disables all components bound to properties that begin with given prefix.
+ */
+ public void setComponentsEnabled(String prefix, boolean enabled) {
+ for (Iterator iter = _bindings.values().iterator(); iter.hasNext();) {
+ Binding b = (Binding) iter.next();
+ if (b.getProperty().startsWith(prefix)) {
+ b.setEnabled(enabled);
+ }
+ }
+ }
+
+ /**
+ * Clear all components, set them to their default values.
+ * Clears the _modified flag.
+ */
+ public void clear(IValidatable bean) {
+ for (Iterator iter = _optComponents.values().iterator(); iter.hasNext();) {
+ ((Binding) iter.next()).clear(bean);
+ }
+ for (Iterator iter = _bindings.values().iterator(); iter.hasNext();) {
+ ((Binding) iter.next()).clear(bean);
+ }
+ _modified = false;
+ }
+
+ /**
+ * Copies data from the Java Bean to the UI components.
+ * Clears the _modified flag.
+ */
+ public void put(IValidatable bean) {
+ for (Iterator iter = _optComponents.values().iterator(); iter.hasNext();) {
+ ((Binding) iter.next()).put(bean);
+ }
+ for (Iterator iter = _bindings.values().iterator(); iter.hasNext();) {
+ Binding b = (Binding) iter.next();
+ if (isPropertyNull(bean, b)) {
+ b.clear(null);
+ } else {
+ b.put(bean);
+ }
+ }
+ _modified = false;
+ }
+
+ /**
+ * Copies data from UI components to the Java Bean and checks it's class invariants.
+ * Clears the _modified flag.
+ * @throws InvariantViolationException
+ * @throws BindingException
+ */
+ public void get(IValidatable bean) {
+ try {
+ for (Iterator iter = _optComponents.values().iterator(); iter.hasNext();) {
+ ((Binding) iter.next()).get(bean);
+ }
+ for (Iterator iter = _bindings.values().iterator(); iter.hasNext();) {
+ Binding b = (Binding) iter.next();
+ if (!isPropertyNull(bean, b)) {
+ b.get(bean);
+ }
+ }
+ bean.checkInvariants();
+ for (Iterator iter = _optComponents.keySet().iterator(); iter.hasNext();) {
+ String property = (String) iter.next();
+ IValidatable component = (IValidatable) PropertyUtils.getProperty(bean,
+ property);
+ if (component != null) {
+ component.checkInvariants();
+ }
+ }
+ _modified = false; // XXX
+ } catch (InvariantViolationException e) {
+ e.setBinding(getBinding(e.getProperty()));
+ throw e;
+ } catch (Exception e) {
+ throw new BindingException(e);
+ }
+ }
+
+ private Bindings add(Binding b) {
+ if (_bindings.containsKey(b.getProperty())) {
+ throw new BindingException(Messages.getString("Bindings.duplicate.binding"));
+ }
+ _bindings.put(b.getProperty(), b);
+ return this;
+ }
+
+ /**
+ * Add an optional (nullable) Java Bean component of type clazz.
+ */
+ public Bindings addOptComponent(String property, Class clazz, JToggleButton c,
+ boolean enabledByDefault) {
+ Binding b = new OptComponentBinding(this, property, clazz, c, enabledByDefault);
+ if (_optComponents.containsKey(property)) {
+ throw new BindingException(Messages.getString("Bindings.duplicate.binding"));
+ }
+ _optComponents.put(property, b);
+ return this;
+ }
+
+ /**
+ * Add an optional (nullable) Java Bean component of type clazz.
+ */
+ public Bindings addOptComponent(String property, Class clazz, JToggleButton c) {
+ return addOptComponent(property, clazz, c, false);
+ }
+
+ /**
+ * Handles JEditorPane, JTextArea, JTextField
+ */
+ public Bindings add(String property, JTextComponent c, String defaultValue) {
+ registerPropertyChangeListener(c);
+ return add(new JTextComponentBinding(property, c, defaultValue));
+ }
+
+ /**
+ * Handles JEditorPane, JTextArea, JTextField
+ */
+ public Bindings add(String property, JTextComponent c) {
+ registerPropertyChangeListener(c);
+ return add(new JTextComponentBinding(property, c, ""));
+ }
+
+ /**
+ * Handles JToggleButton, JCheckBox
+ */
+ public Bindings add(String property, JToggleButton c, boolean defaultValue) {
+ registerPropertyChangeListener(c);
+ return add(new JToggleButtonBinding(property, c, defaultValue));
+ }
+
+ /**
+ * Handles JToggleButton, JCheckBox
+ */
+ public Bindings add(String property, JToggleButton c) {
+ registerPropertyChangeListener(c);
+ return add(new JToggleButtonBinding(property, c, false));
+ }
+
+ /**
+ * Handles JRadioButton
+ */
+ public Bindings add(String property, JRadioButton[] cs, int defaultValue) {
+ registerPropertyChangeListener(cs);
+ return add(new JRadioButtonBinding(property, cs, defaultValue));
+ }
+
+ /**
+ * Handles JRadioButton
+ */
+ public Bindings add(String property, JRadioButton[] cs) {
+ registerPropertyChangeListener(cs);
+ return add(new JRadioButtonBinding(property, cs, 0));
+ }
+
+ /**
+ * Handles JTextArea
+ */
+ public Bindings add(String property, JTextArea textArea, String defaultValue) {
+ registerPropertyChangeListener(textArea);
+ return add(new JTextComponentBinding(property, textArea, defaultValue));
+ }
+
+ /**
+ * Handles JTextArea lists
+ */
+ public Bindings add(String property, JTextArea textArea) {
+ registerPropertyChangeListener(textArea);
+ return add(new JTextAreaBinding(property, textArea));
+ }
+
+ /**
+ * Handles Optional JTextArea lists
+ */
+ public Bindings add(String property, String stateProperty,
+ JToggleButton button, JTextArea textArea) {
+ registerPropertyChangeListener(button);
+ registerPropertyChangeListener(textArea);
+ return add(new OptJTextAreaBinding(property, stateProperty, button, textArea));
+ }
+
+ /**
+ * Handles JList
+ */
+ public Bindings add(String property, JList list) {
+ registerPropertyChangeListener(list);
+ return add(new JListBinding(property, list));
+ }
+
+ /**
+ * Handles JComboBox
+ */
+ public Bindings add(String property, JComboBox combo, int defaultValue) {
+ registerPropertyChangeListener(combo);
+ return add(new JComboBoxBinding(property, combo, defaultValue));
+ }
+
+ /**
+ * Handles JComboBox
+ */
+ public Bindings add(String property, JComboBox combo) {
+ registerPropertyChangeListener(combo);
+ return add(new JComboBoxBinding(property, combo, 0));
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/IValidatable.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/IValidatable.java
old mode 100755
new mode 100644
index fe0dd4862c1..1851c696200
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/IValidatable.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/IValidatable.java
@@ -1,44 +1,44 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on 2004-01-30
- */
-package net.sf.launch4j.binding;
-
-/**
- * @author Copyright (C) 2004 Grzegorz Kowal
- */
-public interface IValidatable {
- public void checkInvariants();
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on 2004-01-30
+ */
+package net.sf.launch4j.binding;
+
+/**
+ * @author Copyright (C) 2004 Grzegorz Kowal
+ */
+public interface IValidatable {
+ public void checkInvariants();
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/InvariantViolationException.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/InvariantViolationException.java
old mode 100755
new mode 100644
index 2f7f88b1d88..4196433de97
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/InvariantViolationException.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/InvariantViolationException.java
@@ -1,67 +1,67 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on Jun 23, 2003
- */
-package net.sf.launch4j.binding;
-
-/**
- * @author Copyright (C) 2003 Grzegorz Kowal
- */
-public class InvariantViolationException extends RuntimeException {
- private final String _property;
- private Binding _binding;
-
- public InvariantViolationException(String msg) {
- super(msg);
- _property = null;
- }
-
- public InvariantViolationException(String property, String msg) {
- super(msg);
- _property = property;
- }
-
- public String getProperty() {
- return _property;
- }
-
- public Binding getBinding() {
- return _binding;
- }
-
- public void setBinding(Binding binding) {
- _binding = binding;
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on Jun 23, 2003
+ */
+package net.sf.launch4j.binding;
+
+/**
+ * @author Copyright (C) 2003 Grzegorz Kowal
+ */
+public class InvariantViolationException extends RuntimeException {
+ private final String _property;
+ private Binding _binding;
+
+ public InvariantViolationException(String msg) {
+ super(msg);
+ _property = null;
+ }
+
+ public InvariantViolationException(String property, String msg) {
+ super(msg);
+ _property = property;
+ }
+
+ public String getProperty() {
+ return _property;
+ }
+
+ public Binding getBinding() {
+ return _binding;
+ }
+
+ public void setBinding(Binding binding) {
+ _binding = binding;
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/JComboBoxBinding.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/JComboBoxBinding.java
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/JListBinding.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/JListBinding.java
old mode 100755
new mode 100644
index 31dec58c180..cb83561268c
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/JListBinding.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/JListBinding.java
@@ -1,118 +1,118 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on May 1, 2006
- */
-package net.sf.launch4j.binding;
-
-import java.awt.Color;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.swing.DefaultListModel;
-import javax.swing.JList;
-
-import org.apache.commons.beanutils.PropertyUtils;
-
-/**
- * @author Copyright (C) 2006 Grzegorz Kowal
- */
-public class JListBinding implements Binding {
- private final String _property;
- private final JList _list;
- private final Color _validColor;
-
- public JListBinding(String property, JList list) {
- if (property == null || list == null) {
- throw new NullPointerException();
- }
- if (property.equals("")) {
- throw new IllegalArgumentException();
- }
- _property = property;
- _list = list;
- _validColor = _list.getBackground();
- }
-
- public String getProperty() {
- return _property;
- }
-
- public void clear(IValidatable bean) {
- _list.setModel(new DefaultListModel());
- }
-
- public void put(IValidatable bean) {
- try {
- DefaultListModel model = new DefaultListModel();
- List list = (List) PropertyUtils.getProperty(bean, _property);
- if (list != null) {
- for (Iterator iter = list.iterator(); iter.hasNext();) {
- model.addElement(iter.next());
- }
- }
- _list.setModel(model);
- } catch (Exception e) {
- throw new BindingException(e);
- }
- }
-
- public void get(IValidatable bean) {
- try {
- DefaultListModel model = (DefaultListModel) _list.getModel();
- final int size = model.getSize();
- List list = new ArrayList(size);
- for (int i = 0; i < size; i++) {
- list.add(model.get(i));
- }
- PropertyUtils.setProperty(bean, _property, list);
- } catch (Exception e) {
- throw new BindingException(e);
- }
- }
-
- public void markValid() {
- _list.setBackground(_validColor);
- _list.requestFocusInWindow();
- }
-
- public void markInvalid() {
- _list.setBackground(Binding.INVALID_COLOR);
- }
-
- public void setEnabled(boolean enabled) {
- _list.setEnabled(enabled);
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on May 1, 2006
+ */
+package net.sf.launch4j.binding;
+
+import java.awt.Color;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.swing.DefaultListModel;
+import javax.swing.JList;
+
+import org.apache.commons.beanutils.PropertyUtils;
+
+/**
+ * @author Copyright (C) 2006 Grzegorz Kowal
+ */
+public class JListBinding implements Binding {
+ private final String _property;
+ private final JList _list;
+ private final Color _validColor;
+
+ public JListBinding(String property, JList list) {
+ if (property == null || list == null) {
+ throw new NullPointerException();
+ }
+ if (property.equals("")) {
+ throw new IllegalArgumentException();
+ }
+ _property = property;
+ _list = list;
+ _validColor = _list.getBackground();
+ }
+
+ public String getProperty() {
+ return _property;
+ }
+
+ public void clear(IValidatable bean) {
+ _list.setModel(new DefaultListModel());
+ }
+
+ public void put(IValidatable bean) {
+ try {
+ DefaultListModel model = new DefaultListModel();
+ List list = (List) PropertyUtils.getProperty(bean, _property);
+ if (list != null) {
+ for (Iterator iter = list.iterator(); iter.hasNext();) {
+ model.addElement(iter.next());
+ }
+ }
+ _list.setModel(model);
+ } catch (Exception e) {
+ throw new BindingException(e);
+ }
+ }
+
+ public void get(IValidatable bean) {
+ try {
+ DefaultListModel model = (DefaultListModel) _list.getModel();
+ final int size = model.getSize();
+ List list = new ArrayList(size);
+ for (int i = 0; i < size; i++) {
+ list.add(model.get(i));
+ }
+ PropertyUtils.setProperty(bean, _property, list);
+ } catch (Exception e) {
+ throw new BindingException(e);
+ }
+ }
+
+ public void markValid() {
+ _list.setBackground(_validColor);
+ _list.requestFocusInWindow();
+ }
+
+ public void markInvalid() {
+ _list.setBackground(Binding.INVALID_COLOR);
+ }
+
+ public void setEnabled(boolean enabled) {
+ _list.setEnabled(enabled);
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/JRadioButtonBinding.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/JRadioButtonBinding.java
old mode 100755
new mode 100644
index 9d922bedf7e..b54f3d52e52
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/JRadioButtonBinding.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/JRadioButtonBinding.java
@@ -1,146 +1,146 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on May 10, 2005
- */
-package net.sf.launch4j.binding;
-
-import java.awt.Color;
-
-import javax.swing.JRadioButton;
-
-import org.apache.commons.beanutils.PropertyUtils;
-
-/**
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public class JRadioButtonBinding implements Binding {
- private final String _property;
- private final JRadioButton[] _buttons;
- private final int _defaultValue;
- private final Color _validColor;
-
- public JRadioButtonBinding(String property, JRadioButton[] buttons, int defaultValue) {
- if (property == null || buttons == null) {
- throw new NullPointerException();
- }
- for (int i = 0; i < buttons.length; i++) {
- if (buttons[i] == null) {
- throw new NullPointerException();
- }
- }
- if (property.equals("")
- || buttons.length == 0
- || defaultValue < 0 || defaultValue >= buttons.length) {
- throw new IllegalArgumentException();
- }
- _property = property;
- _buttons = buttons;
- _defaultValue = defaultValue;
- _validColor = buttons[0].getBackground();
- }
-
- public String getProperty() {
- return _property;
- }
-
- public void clear(IValidatable bean) {
- select(_defaultValue);
- }
-
- public void put(IValidatable bean) {
- try {
- Integer i = (Integer) PropertyUtils.getProperty(bean, _property);
- if (i == null) {
- throw new BindingException(
- Messages.getString("JRadioButtonBinding.property.null"));
- }
- select(i.intValue());
- } catch (Exception e) {
- throw new BindingException(e);
- }
- }
-
- public void get(IValidatable bean) {
- try {
- for (int i = 0; i < _buttons.length; i++) {
- if (_buttons[i].isSelected()) {
- PropertyUtils.setProperty(bean, _property, new Integer(i));
- return;
- }
- }
- throw new BindingException(
- Messages.getString("JRadioButtonBinding.nothing.selected"));
- } catch (Exception e) {
- throw new BindingException(e);
- }
- }
-
- private void select(int index) {
- if (index < 0 || index >= _buttons.length) {
- throw new BindingException(
- Messages.getString("JRadioButtonBinding.index.out.of.bounds"));
- }
- _buttons[index].setSelected(true);
- }
-
- public void markValid() {
- for (int i = 0; i < _buttons.length; i++) {
- if (_buttons[i].isSelected()) {
- _buttons[i].setBackground(_validColor);
- _buttons[i].requestFocusInWindow();
- return;
- }
- }
- throw new BindingException(
- Messages.getString("JRadioButtonBinding.nothing.selected"));
- }
-
- public void markInvalid() {
- for (int i = 0; i < _buttons.length; i++) {
- if (_buttons[i].isSelected()) {
- _buttons[i].setBackground(Binding.INVALID_COLOR);
- return;
- }
- }
- throw new BindingException(
- Messages.getString("JRadioButtonBinding.nothing.selected"));
- }
-
- public void setEnabled(boolean enabled) {
- for (int i = 0; i < _buttons.length; i++) {
- _buttons[i].setEnabled(enabled);
- }
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on May 10, 2005
+ */
+package net.sf.launch4j.binding;
+
+import java.awt.Color;
+
+import javax.swing.JRadioButton;
+
+import org.apache.commons.beanutils.PropertyUtils;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class JRadioButtonBinding implements Binding {
+ private final String _property;
+ private final JRadioButton[] _buttons;
+ private final int _defaultValue;
+ private final Color _validColor;
+
+ public JRadioButtonBinding(String property, JRadioButton[] buttons, int defaultValue) {
+ if (property == null || buttons == null) {
+ throw new NullPointerException();
+ }
+ for (int i = 0; i < buttons.length; i++) {
+ if (buttons[i] == null) {
+ throw new NullPointerException();
+ }
+ }
+ if (property.equals("")
+ || buttons.length == 0
+ || defaultValue < 0 || defaultValue >= buttons.length) {
+ throw new IllegalArgumentException();
+ }
+ _property = property;
+ _buttons = buttons;
+ _defaultValue = defaultValue;
+ _validColor = buttons[0].getBackground();
+ }
+
+ public String getProperty() {
+ return _property;
+ }
+
+ public void clear(IValidatable bean) {
+ select(_defaultValue);
+ }
+
+ public void put(IValidatable bean) {
+ try {
+ Integer i = (Integer) PropertyUtils.getProperty(bean, _property);
+ if (i == null) {
+ throw new BindingException(
+ Messages.getString("JRadioButtonBinding.property.null"));
+ }
+ select(i.intValue());
+ } catch (Exception e) {
+ throw new BindingException(e);
+ }
+ }
+
+ public void get(IValidatable bean) {
+ try {
+ for (int i = 0; i < _buttons.length; i++) {
+ if (_buttons[i].isSelected()) {
+ PropertyUtils.setProperty(bean, _property, new Integer(i));
+ return;
+ }
+ }
+ throw new BindingException(
+ Messages.getString("JRadioButtonBinding.nothing.selected"));
+ } catch (Exception e) {
+ throw new BindingException(e);
+ }
+ }
+
+ private void select(int index) {
+ if (index < 0 || index >= _buttons.length) {
+ throw new BindingException(
+ Messages.getString("JRadioButtonBinding.index.out.of.bounds"));
+ }
+ _buttons[index].setSelected(true);
+ }
+
+ public void markValid() {
+ for (int i = 0; i < _buttons.length; i++) {
+ if (_buttons[i].isSelected()) {
+ _buttons[i].setBackground(_validColor);
+ _buttons[i].requestFocusInWindow();
+ return;
+ }
+ }
+ throw new BindingException(
+ Messages.getString("JRadioButtonBinding.nothing.selected"));
+ }
+
+ public void markInvalid() {
+ for (int i = 0; i < _buttons.length; i++) {
+ if (_buttons[i].isSelected()) {
+ _buttons[i].setBackground(Binding.INVALID_COLOR);
+ return;
+ }
+ }
+ throw new BindingException(
+ Messages.getString("JRadioButtonBinding.nothing.selected"));
+ }
+
+ public void setEnabled(boolean enabled) {
+ for (int i = 0; i < _buttons.length; i++) {
+ _buttons[i].setEnabled(enabled);
+ }
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/JTextAreaBinding.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/JTextAreaBinding.java
old mode 100755
new mode 100644
index d4e8a2c6590..3b1ab4d8a7c
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/JTextAreaBinding.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/JTextAreaBinding.java
@@ -1,123 +1,123 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on Jun 14, 2006
- */
-package net.sf.launch4j.binding;
-
-import java.awt.Color;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.swing.JTextArea;
-
-import org.apache.commons.beanutils.PropertyUtils;
-
-/**
- * @author Copyright (C) 2006 Grzegorz Kowal
- */
-public class JTextAreaBinding implements Binding {
- private final String _property;
- private final JTextArea _textArea;
- private final Color _validColor;
-
- public JTextAreaBinding(String property, JTextArea textArea) {
- if (property == null || textArea == null) {
- throw new NullPointerException();
- }
- if (property.equals("")) {
- throw new IllegalArgumentException();
- }
- _property = property;
- _textArea = textArea;
- _validColor = _textArea.getBackground();
- }
-
- public String getProperty() {
- return _property;
- }
-
- public void clear(IValidatable bean) {
- put(bean);
- }
-
- public void put(IValidatable bean) {
- try {
- List list = (List) PropertyUtils.getProperty(bean, _property);
- StringBuffer sb = new StringBuffer();
- if (list != null) {
- for (int i = 0; i < list.size(); i++) {
- sb.append(list.get(i));
- if (i < list.size() - 1) {
- sb.append("\n");
- }
- }
- }
- _textArea.setText(sb.toString());
- } catch (Exception e) {
- throw new BindingException(e);
- }
- }
-
- public void get(IValidatable bean) {
- try {
- String text = _textArea.getText();
- if (!text.equals("")) {
- String[] items = text.split("\n");
- List list = new ArrayList();
- for (int i = 0; i < items.length; i++) {
- list.add(items[i]);
- }
- PropertyUtils.setProperty(bean, _property, list);
- } else {
- PropertyUtils.setProperty(bean, _property, null);
- }
- } catch (Exception e) {
- throw new BindingException(e);
- }
- }
-
- public void markValid() {
- _textArea.setBackground(_validColor);
- _textArea.requestFocusInWindow();
- }
-
- public void markInvalid() {
- _textArea.setBackground(Binding.INVALID_COLOR);
- }
-
- public void setEnabled(boolean enabled) {
- _textArea.setEnabled(enabled);
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on Jun 14, 2006
+ */
+package net.sf.launch4j.binding;
+
+import java.awt.Color;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.JTextArea;
+
+import org.apache.commons.beanutils.PropertyUtils;
+
+/**
+ * @author Copyright (C) 2006 Grzegorz Kowal
+ */
+public class JTextAreaBinding implements Binding {
+ private final String _property;
+ private final JTextArea _textArea;
+ private final Color _validColor;
+
+ public JTextAreaBinding(String property, JTextArea textArea) {
+ if (property == null || textArea == null) {
+ throw new NullPointerException();
+ }
+ if (property.equals("")) {
+ throw new IllegalArgumentException();
+ }
+ _property = property;
+ _textArea = textArea;
+ _validColor = _textArea.getBackground();
+ }
+
+ public String getProperty() {
+ return _property;
+ }
+
+ public void clear(IValidatable bean) {
+ put(bean);
+ }
+
+ public void put(IValidatable bean) {
+ try {
+ List list = (List) PropertyUtils.getProperty(bean, _property);
+ StringBuffer sb = new StringBuffer();
+ if (list != null) {
+ for (int i = 0; i < list.size(); i++) {
+ sb.append(list.get(i));
+ if (i < list.size() - 1) {
+ sb.append("\n");
+ }
+ }
+ }
+ _textArea.setText(sb.toString());
+ } catch (Exception e) {
+ throw new BindingException(e);
+ }
+ }
+
+ public void get(IValidatable bean) {
+ try {
+ String text = _textArea.getText();
+ if (!text.equals("")) {
+ String[] items = text.split("\n");
+ List list = new ArrayList();
+ for (int i = 0; i < items.length; i++) {
+ list.add(items[i]);
+ }
+ PropertyUtils.setProperty(bean, _property, list);
+ } else {
+ PropertyUtils.setProperty(bean, _property, null);
+ }
+ } catch (Exception e) {
+ throw new BindingException(e);
+ }
+ }
+
+ public void markValid() {
+ _textArea.setBackground(_validColor);
+ _textArea.requestFocusInWindow();
+ }
+
+ public void markInvalid() {
+ _textArea.setBackground(Binding.INVALID_COLOR);
+ }
+
+ public void setEnabled(boolean enabled) {
+ _textArea.setEnabled(enabled);
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/JTextComponentBinding.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/JTextComponentBinding.java
old mode 100755
new mode 100644
index 6b0dd1b0b28..737c106066a
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/JTextComponentBinding.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/JTextComponentBinding.java
@@ -1,108 +1,108 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on Apr 30, 2005
- */
-package net.sf.launch4j.binding;
-
-import java.awt.Color;
-
-import javax.swing.text.JTextComponent;
-
-import org.apache.commons.beanutils.BeanUtils;
-
-/**
- * Handles JEditorPane, JTextArea, JTextField
- *
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public class JTextComponentBinding implements Binding {
- private final String _property;
- private final JTextComponent _textComponent;
- private final String _defaultValue;
- private final Color _validColor;
-
- public JTextComponentBinding(String property, JTextComponent textComponent,
- String defaultValue) {
- if (property == null || textComponent == null || defaultValue == null) {
- throw new NullPointerException();
- }
- if (property.equals("")) {
- throw new IllegalArgumentException();
- }
- _property = property;
- _textComponent = textComponent;
- _defaultValue = defaultValue;
- _validColor = _textComponent.getBackground();
- }
-
- public String getProperty() {
- return _property;
- }
-
- public void clear(IValidatable bean) {
- _textComponent.setText(_defaultValue);
- }
-
- public void put(IValidatable bean) {
- try {
- String s = BeanUtils.getProperty(bean, _property);
- // XXX displays zeros as blank
- _textComponent.setText(s != null && !s.equals("0") ? s : "");
- } catch (Exception e) {
- throw new BindingException(e);
- }
- }
-
- public void get(IValidatable bean) {
- try {
- BeanUtils.setProperty(bean, _property, _textComponent.getText());
- } catch (Exception e) {
- throw new BindingException(e);
- }
- }
-
- public void markValid() {
- _textComponent.setBackground(_validColor);
- _textComponent.requestFocusInWindow();
- }
-
- public void markInvalid() {
- _textComponent.setBackground(Binding.INVALID_COLOR);
- }
-
- public void setEnabled(boolean enabled) {
- _textComponent.setEnabled(enabled);
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on Apr 30, 2005
+ */
+package net.sf.launch4j.binding;
+
+import java.awt.Color;
+
+import javax.swing.text.JTextComponent;
+
+import org.apache.commons.beanutils.BeanUtils;
+
+/**
+ * Handles JEditorPane, JTextArea, JTextField
+ *
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class JTextComponentBinding implements Binding {
+ private final String _property;
+ private final JTextComponent _textComponent;
+ private final String _defaultValue;
+ private final Color _validColor;
+
+ public JTextComponentBinding(String property, JTextComponent textComponent,
+ String defaultValue) {
+ if (property == null || textComponent == null || defaultValue == null) {
+ throw new NullPointerException();
+ }
+ if (property.equals("")) {
+ throw new IllegalArgumentException();
+ }
+ _property = property;
+ _textComponent = textComponent;
+ _defaultValue = defaultValue;
+ _validColor = _textComponent.getBackground();
+ }
+
+ public String getProperty() {
+ return _property;
+ }
+
+ public void clear(IValidatable bean) {
+ _textComponent.setText(_defaultValue);
+ }
+
+ public void put(IValidatable bean) {
+ try {
+ String s = BeanUtils.getProperty(bean, _property);
+ // XXX displays zeros as blank
+ _textComponent.setText(s != null && !s.equals("0") ? s : "");
+ } catch (Exception e) {
+ throw new BindingException(e);
+ }
+ }
+
+ public void get(IValidatable bean) {
+ try {
+ BeanUtils.setProperty(bean, _property, _textComponent.getText());
+ } catch (Exception e) {
+ throw new BindingException(e);
+ }
+ }
+
+ public void markValid() {
+ _textComponent.setBackground(_validColor);
+ _textComponent.requestFocusInWindow();
+ }
+
+ public void markInvalid() {
+ _textComponent.setBackground(Binding.INVALID_COLOR);
+ }
+
+ public void setEnabled(boolean enabled) {
+ _textComponent.setEnabled(enabled);
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/JToggleButtonBinding.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/JToggleButtonBinding.java
old mode 100755
new mode 100644
index a7055cccc5e..69271eaea4f
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/JToggleButtonBinding.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/JToggleButtonBinding.java
@@ -1,108 +1,108 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on Apr 30, 2005
- */
-package net.sf.launch4j.binding;
-
-import java.awt.Color;
-
-import javax.swing.JToggleButton;
-
-import org.apache.commons.beanutils.PropertyUtils;
-
-/**
- * Handles JToggleButton, JCheckBox
- *
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public class JToggleButtonBinding implements Binding {
- private final String _property;
- private final JToggleButton _button;
- private final boolean _defaultValue;
- private final Color _validColor;
-
- public JToggleButtonBinding(String property, JToggleButton button,
- boolean defaultValue) {
- if (property == null || button == null) {
- throw new NullPointerException();
- }
- if (property.equals("")) {
- throw new IllegalArgumentException();
- }
- _property = property;
- _button = button;
- _defaultValue = defaultValue;
- _validColor = _button.getBackground();
- }
-
- public String getProperty() {
- return _property;
- }
-
- public void clear(IValidatable bean) {
- _button.setSelected(_defaultValue);
- }
-
- public void put(IValidatable bean) {
- try {
- Boolean b = (Boolean) PropertyUtils.getProperty(bean, _property);
- _button.setSelected(b != null && b.booleanValue());
- } catch (Exception e) {
- throw new BindingException(e);
- }
- }
-
- public void get(IValidatable bean) {
- try {
- PropertyUtils.setProperty(bean, _property,
- Boolean.valueOf(_button.isSelected()));
- } catch (Exception e) {
- throw new BindingException(e);
- }
- }
-
- public void markValid() {
- _button.setBackground(_validColor);
- _button.requestFocusInWindow();
- }
-
- public void markInvalid() {
- _button.setBackground(Binding.INVALID_COLOR);
- }
-
- public void setEnabled(boolean enabled) {
- _button.setEnabled(enabled);
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on Apr 30, 2005
+ */
+package net.sf.launch4j.binding;
+
+import java.awt.Color;
+
+import javax.swing.JToggleButton;
+
+import org.apache.commons.beanutils.PropertyUtils;
+
+/**
+ * Handles JToggleButton, JCheckBox
+ *
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class JToggleButtonBinding implements Binding {
+ private final String _property;
+ private final JToggleButton _button;
+ private final boolean _defaultValue;
+ private final Color _validColor;
+
+ public JToggleButtonBinding(String property, JToggleButton button,
+ boolean defaultValue) {
+ if (property == null || button == null) {
+ throw new NullPointerException();
+ }
+ if (property.equals("")) {
+ throw new IllegalArgumentException();
+ }
+ _property = property;
+ _button = button;
+ _defaultValue = defaultValue;
+ _validColor = _button.getBackground();
+ }
+
+ public String getProperty() {
+ return _property;
+ }
+
+ public void clear(IValidatable bean) {
+ _button.setSelected(_defaultValue);
+ }
+
+ public void put(IValidatable bean) {
+ try {
+ Boolean b = (Boolean) PropertyUtils.getProperty(bean, _property);
+ _button.setSelected(b != null && b.booleanValue());
+ } catch (Exception e) {
+ throw new BindingException(e);
+ }
+ }
+
+ public void get(IValidatable bean) {
+ try {
+ PropertyUtils.setProperty(bean, _property,
+ Boolean.valueOf(_button.isSelected()));
+ } catch (Exception e) {
+ throw new BindingException(e);
+ }
+ }
+
+ public void markValid() {
+ _button.setBackground(_validColor);
+ _button.requestFocusInWindow();
+ }
+
+ public void markInvalid() {
+ _button.setBackground(Binding.INVALID_COLOR);
+ }
+
+ public void setEnabled(boolean enabled) {
+ _button.setEnabled(enabled);
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/Messages.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/Messages.java
old mode 100755
new mode 100644
index 91ddff2b13c..ca4332cacb1
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/Messages.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/Messages.java
@@ -1,78 +1,78 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package net.sf.launch4j.binding;
-
-import java.text.MessageFormat;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-public class Messages {
- private static final String BUNDLE_NAME = "net.sf.launch4j.binding.messages";
-
- private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
- .getBundle(BUNDLE_NAME);
- private static final MessageFormat FORMATTER = new MessageFormat("");
-
- private Messages() {
- }
-
- public static String getString(String key) {
- try {
- return RESOURCE_BUNDLE.getString(key);
- } catch (MissingResourceException e) {
- return '!' + key + '!';
- }
- }
-
- public static String getString(String key, String arg0) {
- return getString(key, new Object[] {arg0});
- }
-
- public static String getString(String key, String arg0, String arg1) {
- return getString(key, new Object[] {arg0, arg1});
- }
-
- public static String getString(String key, String arg0, String arg1, String arg2) {
- return getString(key, new Object[] {arg0, arg1, arg2});
- }
-
- public static String getString(String key, Object[] args) {
- try {
- FORMATTER.applyPattern(RESOURCE_BUNDLE.getString(key));
- return FORMATTER.format(args);
- } catch (MissingResourceException e) {
- return '!' + key + '!';
- }
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+package net.sf.launch4j.binding;
+
+import java.text.MessageFormat;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+public class Messages {
+ private static final String BUNDLE_NAME = "net.sf.launch4j.binding.messages";
+
+ private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
+ .getBundle(BUNDLE_NAME);
+ private static final MessageFormat FORMATTER = new MessageFormat("");
+
+ private Messages() {
+ }
+
+ public static String getString(String key) {
+ try {
+ return RESOURCE_BUNDLE.getString(key);
+ } catch (MissingResourceException e) {
+ return '!' + key + '!';
+ }
+ }
+
+ public static String getString(String key, String arg0) {
+ return getString(key, new Object[] {arg0});
+ }
+
+ public static String getString(String key, String arg0, String arg1) {
+ return getString(key, new Object[] {arg0, arg1});
+ }
+
+ public static String getString(String key, String arg0, String arg1, String arg2) {
+ return getString(key, new Object[] {arg0, arg1, arg2});
+ }
+
+ public static String getString(String key, Object[] args) {
+ try {
+ FORMATTER.applyPattern(RESOURCE_BUNDLE.getString(key));
+ return FORMATTER.format(args);
+ } catch (MissingResourceException e) {
+ return '!' + key + '!';
+ }
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/OptComponentBinding.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/OptComponentBinding.java
old mode 100755
new mode 100644
index b573da6282a..05a43caa6e1
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/OptComponentBinding.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/OptComponentBinding.java
@@ -1,119 +1,119 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on May 11, 2005
- */
-package net.sf.launch4j.binding;
-
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.Arrays;
-
-import javax.swing.JToggleButton;
-
-import org.apache.commons.beanutils.PropertyUtils;
-
-/**
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public class OptComponentBinding implements Binding, ActionListener {
- private final Bindings _bindings;
- private final String _property;
- private final Class _clazz;
- private final JToggleButton _button;
- private final boolean _enabledByDefault;
-
- public OptComponentBinding(Bindings bindings, String property, Class clazz,
- JToggleButton button, boolean enabledByDefault) {
- if (property == null || clazz == null || button == null) {
- throw new NullPointerException();
- }
- if (property.equals("")) {
- throw new IllegalArgumentException();
- }
- if (!Arrays.asList(clazz.getInterfaces()).contains(IValidatable.class)) {
- throw new IllegalArgumentException(
- Messages.getString("OptComponentBinding.must.implement")
- + IValidatable.class);
- }
- _bindings = bindings;
- _property = property;
- _clazz = clazz;
- _button = button;
- _button.addActionListener(this);
- _enabledByDefault = enabledByDefault;
- }
-
- public String getProperty() {
- return _property;
- }
-
- public void clear(IValidatable bean) {
- _button.setSelected(_enabledByDefault);
- updateComponents();
- }
-
- public void put(IValidatable bean) {
- try {
- Object component = PropertyUtils.getProperty(bean, _property);
- _button.setSelected(component != null);
- updateComponents();
- } catch (Exception e) {
- throw new BindingException(e);
- }
- }
-
- public void get(IValidatable bean) {
- try {
- PropertyUtils.setProperty(bean, _property, _button.isSelected()
- ? _clazz.newInstance() : null);
- } catch (Exception e) {
- throw new BindingException(e);
- }
- }
-
- public void markValid() {}
-
- public void markInvalid() {}
-
- public void setEnabled(boolean enabled) {} // XXX implement?
-
- public void actionPerformed(ActionEvent e) {
- updateComponents();
- }
-
- private void updateComponents() {
- _bindings.setComponentsEnabled(_property, _button.isSelected());
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on May 11, 2005
+ */
+package net.sf.launch4j.binding;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.Arrays;
+
+import javax.swing.JToggleButton;
+
+import org.apache.commons.beanutils.PropertyUtils;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class OptComponentBinding implements Binding, ActionListener {
+ private final Bindings _bindings;
+ private final String _property;
+ private final Class _clazz;
+ private final JToggleButton _button;
+ private final boolean _enabledByDefault;
+
+ public OptComponentBinding(Bindings bindings, String property, Class clazz,
+ JToggleButton button, boolean enabledByDefault) {
+ if (property == null || clazz == null || button == null) {
+ throw new NullPointerException();
+ }
+ if (property.equals("")) {
+ throw new IllegalArgumentException();
+ }
+ if (!Arrays.asList(clazz.getInterfaces()).contains(IValidatable.class)) {
+ throw new IllegalArgumentException(
+ Messages.getString("OptComponentBinding.must.implement")
+ + IValidatable.class);
+ }
+ _bindings = bindings;
+ _property = property;
+ _clazz = clazz;
+ _button = button;
+ _button.addActionListener(this);
+ _enabledByDefault = enabledByDefault;
+ }
+
+ public String getProperty() {
+ return _property;
+ }
+
+ public void clear(IValidatable bean) {
+ _button.setSelected(_enabledByDefault);
+ updateComponents();
+ }
+
+ public void put(IValidatable bean) {
+ try {
+ Object component = PropertyUtils.getProperty(bean, _property);
+ _button.setSelected(component != null);
+ updateComponents();
+ } catch (Exception e) {
+ throw new BindingException(e);
+ }
+ }
+
+ public void get(IValidatable bean) {
+ try {
+ PropertyUtils.setProperty(bean, _property, _button.isSelected()
+ ? _clazz.newInstance() : null);
+ } catch (Exception e) {
+ throw new BindingException(e);
+ }
+ }
+
+ public void markValid() {}
+
+ public void markInvalid() {}
+
+ public void setEnabled(boolean enabled) {} // XXX implement?
+
+ public void actionPerformed(ActionEvent e) {
+ updateComponents();
+ }
+
+ private void updateComponents() {
+ _bindings.setComponentsEnabled(_property, _button.isSelected());
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/OptJTextAreaBinding.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/OptJTextAreaBinding.java
old mode 100755
new mode 100644
index 3cea776d7b1..1cc71d00027
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/OptJTextAreaBinding.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/OptJTextAreaBinding.java
@@ -1,141 +1,141 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on Sep 3, 2005
- */
-package net.sf.launch4j.binding;
-
-import java.awt.Color;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.swing.JTextArea;
-import javax.swing.JToggleButton;
-
-import org.apache.commons.beanutils.BeanUtils;
-import org.apache.commons.beanutils.PropertyUtils;
-
-/**
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public class OptJTextAreaBinding implements Binding, ActionListener {
- private final String _property;
- private final String _stateProperty;
- private final JToggleButton _button;
- private final JTextArea _textArea;
- private final Color _validColor;
-
- public OptJTextAreaBinding(String property, String stateProperty,
- JToggleButton button, JTextArea textArea) {
- if (property == null || button == null || textArea == null) {
- throw new NullPointerException();
- }
- if (property.equals("")) {
- throw new IllegalArgumentException();
- }
- _property = property;
- _stateProperty = stateProperty;
- _button = button;
- _textArea = textArea;
- _validColor = _textArea.getBackground();
- button.addActionListener(this);
- }
-
- public String getProperty() {
- return _property;
- }
-
- public void clear(IValidatable bean) {
- put(bean);
- }
-
- public void put(IValidatable bean) {
- try {
- boolean selected = "true".equals(BeanUtils.getProperty(bean,
- _stateProperty));
- _button.setSelected(selected);
- _textArea.setEnabled(selected);
- List list = (List) PropertyUtils.getProperty(bean, _property);
- StringBuffer sb = new StringBuffer();
- if (list != null) {
- for (int i = 0; i < list.size(); i++) {
- sb.append(list.get(i));
- if (i < list.size() - 1) {
- sb.append("\n");
- }
- }
- }
- _textArea.setText(sb.toString());
- } catch (Exception e) {
- throw new BindingException(e);
- }
- }
-
- public void get(IValidatable bean) {
- try {
- String text = _textArea.getText();
- if (_button.isSelected() && !text.equals("")) {
- String[] items = text.split("\n");
- List list = new ArrayList();
- for (int i = 0; i < items.length; i++) {
- list.add(items[i]);
- }
- PropertyUtils.setProperty(bean, _property, list);
- } else {
- PropertyUtils.setProperty(bean, _property, null);
- }
- } catch (Exception e) {
- throw new BindingException(e);
- }
- }
-
- public void markValid() {
- _textArea.setBackground(_validColor);
- _textArea.requestFocusInWindow();
- }
-
- public void markInvalid() {
- _textArea.setBackground(Binding.INVALID_COLOR);
- }
-
- public void setEnabled(boolean enabled) {
- _textArea.setEnabled(enabled);
- }
-
- public void actionPerformed(ActionEvent e) {
- _textArea.setEnabled(_button.isSelected());
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on Sep 3, 2005
+ */
+package net.sf.launch4j.binding;
+
+import java.awt.Color;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.JTextArea;
+import javax.swing.JToggleButton;
+
+import org.apache.commons.beanutils.BeanUtils;
+import org.apache.commons.beanutils.PropertyUtils;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class OptJTextAreaBinding implements Binding, ActionListener {
+ private final String _property;
+ private final String _stateProperty;
+ private final JToggleButton _button;
+ private final JTextArea _textArea;
+ private final Color _validColor;
+
+ public OptJTextAreaBinding(String property, String stateProperty,
+ JToggleButton button, JTextArea textArea) {
+ if (property == null || button == null || textArea == null) {
+ throw new NullPointerException();
+ }
+ if (property.equals("")) {
+ throw new IllegalArgumentException();
+ }
+ _property = property;
+ _stateProperty = stateProperty;
+ _button = button;
+ _textArea = textArea;
+ _validColor = _textArea.getBackground();
+ button.addActionListener(this);
+ }
+
+ public String getProperty() {
+ return _property;
+ }
+
+ public void clear(IValidatable bean) {
+ put(bean);
+ }
+
+ public void put(IValidatable bean) {
+ try {
+ boolean selected = "true".equals(BeanUtils.getProperty(bean,
+ _stateProperty));
+ _button.setSelected(selected);
+ _textArea.setEnabled(selected);
+ List list = (List) PropertyUtils.getProperty(bean, _property);
+ StringBuffer sb = new StringBuffer();
+ if (list != null) {
+ for (int i = 0; i < list.size(); i++) {
+ sb.append(list.get(i));
+ if (i < list.size() - 1) {
+ sb.append("\n");
+ }
+ }
+ }
+ _textArea.setText(sb.toString());
+ } catch (Exception e) {
+ throw new BindingException(e);
+ }
+ }
+
+ public void get(IValidatable bean) {
+ try {
+ String text = _textArea.getText();
+ if (_button.isSelected() && !text.equals("")) {
+ String[] items = text.split("\n");
+ List list = new ArrayList();
+ for (int i = 0; i < items.length; i++) {
+ list.add(items[i]);
+ }
+ PropertyUtils.setProperty(bean, _property, list);
+ } else {
+ PropertyUtils.setProperty(bean, _property, null);
+ }
+ } catch (Exception e) {
+ throw new BindingException(e);
+ }
+ }
+
+ public void markValid() {
+ _textArea.setBackground(_validColor);
+ _textArea.requestFocusInWindow();
+ }
+
+ public void markInvalid() {
+ _textArea.setBackground(Binding.INVALID_COLOR);
+ }
+
+ public void setEnabled(boolean enabled) {
+ _textArea.setEnabled(enabled);
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ _textArea.setEnabled(_button.isSelected());
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/Validator.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/Validator.java
old mode 100755
new mode 100644
index 88ea67c3396..0a835f364fc
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/Validator.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/Validator.java
@@ -1,259 +1,259 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on 2004-01-30
- */
-package net.sf.launch4j.binding;
-
-import java.io.File;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-
-import net.sf.launch4j.Util;
-import net.sf.launch4j.config.ConfigPersister;
-
-/**
- * @author Copyright (C) 2004 Grzegorz Kowal
- */
-public class Validator {
- public static final String ALPHANUMERIC_PATTERN = "[\\w]*?";
- public static final String ALPHA_PATTERN = "[\\w&&\\D]*?";
- public static final String NUMERIC_PATTERN = "[\\d]*?";
- public static final String PATH_PATTERN = "[\\w|[ .,:\\-/\\\\]]*?";
-
- public static final int MAX_STR = 128;
- public static final int MAX_PATH = 260;
- public static final int MAX_BIG_STR = 8192; // or 16384;
- public static final int MAX_ARGS = 32767 - 2048;
-
- private Validator() {}
-
- public static boolean isEmpty(String s) {
- return s == null || s.equals("");
- }
-
- public static void checkNotNull(Object o, String property, String name) {
- if (o == null) {
- signalViolation(property,
- Messages.getString("Validator.empty.field", name));
- }
- }
-
- public static void checkString(String s, int maxLength, String property,
- String name) {
- if (s == null || s.length() == 0) {
- signalViolation(property,
- Messages.getString("Validator.empty.field", name));
- }
- if (s.length() > maxLength) {
- signalLengthViolation(property, name, maxLength);
- }
- }
-
- public static void checkOptStrings(List strings, int maxLength, int totalMaxLength,
- String property, String name) {
- if (strings == null) {
- return;
- }
- int totalLength = 0;
- for (Iterator iter = strings.iterator(); iter.hasNext();) {
- String s = (String) iter.next();
- checkString(s, maxLength, property, name);
- totalLength += s.length();
- if (totalLength > totalMaxLength) {
- signalLengthViolation(property, name, totalMaxLength);
- }
- }
- }
-
- public static void checkString(String s, int maxLength, String pattern,
- String property, String name) {
- checkString(s, maxLength, property, name);
- if (!s.matches(pattern)) {
- signalViolation(property,
- Messages.getString("Validator.invalid.data", name));
- }
- }
-
- public static void checkOptStrings(List strings, int maxLength, int totalMaxLength,
- String pattern, String property, String name, String msg) {
- if (strings == null) {
- return;
- }
- int totalLength = 0;
- for (Iterator iter = strings.iterator(); iter.hasNext();) {
- String s = (String) iter.next();
- checkString(s, maxLength, property, name);
- if (!s.matches(pattern)) {
- signalViolation(property, msg != null
- ? msg
- : Messages.getString("Validator.invalid.data", name));
- }
- totalLength += s.length();
- if (totalLength > totalMaxLength) {
- signalLengthViolation(property, name, totalMaxLength);
- }
- }
- }
-
- public static void checkOptString(String s, int maxLength, String property,
- String name) {
- if (s == null || s.length() == 0) {
- return;
- }
- if (s.length() > maxLength) {
- signalLengthViolation(property, name, maxLength);
- }
- }
-
- public static void checkOptString(String s, int maxLength, String pattern,
- String property, String name) {
- if (s == null || s.length() == 0) {
- return;
- }
- if (s.length() > maxLength) {
- signalLengthViolation(property, name, maxLength);
- }
- if (!s.matches(pattern)) {
- signalViolation(property,
- Messages.getString("Validator.invalid.data", name));
- }
- }
-
- public static void checkRange(int value, int min, int max,
- String property, String name) {
- if (value < min || value > max) {
- signalViolation(property,
- Messages.getString("Validator.must.be.in.range", name,
- String.valueOf(min), String.valueOf(max)));
- }
- }
-
- public static void checkRange(char value, char min, char max,
- String property, String name) {
- if (value < min || value > max) {
- signalViolation(property, Messages.getString("Validator.must.be.in.range",
- name, String.valueOf(min), String.valueOf(max)));
- }
- }
-
- public static void checkMin(int value, int min, String property, String name) {
- if (value < min) {
- signalViolation(property,
- Messages.getString("Validator.must.be.at.least", name,
- String.valueOf(min)));
- }
- }
-
- public static void checkIn(String s, String[] strings, String property,
- String name) {
- if (isEmpty(s)) {
- signalViolation(property,
- Messages.getString("Validator.empty.field", name));
- }
- List list = Arrays.asList(strings);
- if (!list.contains(s)) {
- signalViolation(property,
- Messages.getString("Validator.invalid.option", name, list.toString()));
- }
- }
-
- public static void checkTrue(boolean condition, String property, String msg) {
- if (!condition) {
- signalViolation(property, msg);
- }
- }
-
- public static void checkFalse(boolean condition, String property, String msg) {
- if (condition) {
- signalViolation(property, msg);
- }
- }
-
- public static void checkElementsNotNullUnique(Collection c, String property,
- String msg) {
- if (c.contains(null)
- || new HashSet(c).size() != c.size()) {
- signalViolation(property,
- Messages.getString("Validator.already.exists", msg));
- }
- }
-
- public static void checkElementsUnique(Collection c, String property, String msg) {
- if (new HashSet(c).size() != c.size()) {
- signalViolation(property,
- Messages.getString("Validator.already.exists", msg));
- }
- }
-
- public static void checkFile(File f, String property, String fileDescription) {
- File cfgPath = ConfigPersister.getInstance().getConfigPath();
- if (f == null
- || f.getPath().equals("")
- || (!f.exists() && !Util.getAbsoluteFile(cfgPath, f).exists())) {
- signalViolation(property,
- Messages.getString("Validator.doesnt.exist", fileDescription));
- }
- }
-
- public static void checkOptFile(File f, String property, String fileDescription) {
- if (f != null && f.getPath().length() > 0) {
- checkFile(f, property, fileDescription);
- }
- }
-
- public static void checkRelativeWinPath(String path, String property, String msg) {
- if (path == null
- || path.equals("")
- || path.startsWith("/")
- || path.startsWith("\\")
- || path.indexOf(':') != -1) {
- signalViolation(property, msg);
- }
- }
-
- public static void signalLengthViolation(String property, String name,
- int maxLength) {
- signalViolation(property,
- Messages.getString("Validator.exceeds.max.length", name,
- String.valueOf(maxLength)));
- }
-
- public static void signalViolation(String property, String msg) {
- throw new InvariantViolationException(property, msg);
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on 2004-01-30
+ */
+package net.sf.launch4j.binding;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+
+import net.sf.launch4j.Util;
+import net.sf.launch4j.config.ConfigPersister;
+
+/**
+ * @author Copyright (C) 2004 Grzegorz Kowal
+ */
+public class Validator {
+ public static final String ALPHANUMERIC_PATTERN = "[\\w]*?";
+ public static final String ALPHA_PATTERN = "[\\w&&\\D]*?";
+ public static final String NUMERIC_PATTERN = "[\\d]*?";
+ public static final String PATH_PATTERN = "[\\w|[ .,:\\-/\\\\]]*?";
+
+ public static final int MAX_STR = 128;
+ public static final int MAX_PATH = 260;
+ public static final int MAX_BIG_STR = 8192; // or 16384;
+ public static final int MAX_ARGS = 32767 - 2048;
+
+ private Validator() {}
+
+ public static boolean isEmpty(String s) {
+ return s == null || s.equals("");
+ }
+
+ public static void checkNotNull(Object o, String property, String name) {
+ if (o == null) {
+ signalViolation(property,
+ Messages.getString("Validator.empty.field", name));
+ }
+ }
+
+ public static void checkString(String s, int maxLength, String property,
+ String name) {
+ if (s == null || s.length() == 0) {
+ signalViolation(property,
+ Messages.getString("Validator.empty.field", name));
+ }
+ if (s.length() > maxLength) {
+ signalLengthViolation(property, name, maxLength);
+ }
+ }
+
+ public static void checkOptStrings(List strings, int maxLength, int totalMaxLength,
+ String property, String name) {
+ if (strings == null) {
+ return;
+ }
+ int totalLength = 0;
+ for (Iterator iter = strings.iterator(); iter.hasNext();) {
+ String s = (String) iter.next();
+ checkString(s, maxLength, property, name);
+ totalLength += s.length();
+ if (totalLength > totalMaxLength) {
+ signalLengthViolation(property, name, totalMaxLength);
+ }
+ }
+ }
+
+ public static void checkString(String s, int maxLength, String pattern,
+ String property, String name) {
+ checkString(s, maxLength, property, name);
+ if (!s.matches(pattern)) {
+ signalViolation(property,
+ Messages.getString("Validator.invalid.data", name));
+ }
+ }
+
+ public static void checkOptStrings(List strings, int maxLength, int totalMaxLength,
+ String pattern, String property, String name, String msg) {
+ if (strings == null) {
+ return;
+ }
+ int totalLength = 0;
+ for (Iterator iter = strings.iterator(); iter.hasNext();) {
+ String s = (String) iter.next();
+ checkString(s, maxLength, property, name);
+ if (!s.matches(pattern)) {
+ signalViolation(property, msg != null
+ ? msg
+ : Messages.getString("Validator.invalid.data", name));
+ }
+ totalLength += s.length();
+ if (totalLength > totalMaxLength) {
+ signalLengthViolation(property, name, totalMaxLength);
+ }
+ }
+ }
+
+ public static void checkOptString(String s, int maxLength, String property,
+ String name) {
+ if (s == null || s.length() == 0) {
+ return;
+ }
+ if (s.length() > maxLength) {
+ signalLengthViolation(property, name, maxLength);
+ }
+ }
+
+ public static void checkOptString(String s, int maxLength, String pattern,
+ String property, String name) {
+ if (s == null || s.length() == 0) {
+ return;
+ }
+ if (s.length() > maxLength) {
+ signalLengthViolation(property, name, maxLength);
+ }
+ if (!s.matches(pattern)) {
+ signalViolation(property,
+ Messages.getString("Validator.invalid.data", name));
+ }
+ }
+
+ public static void checkRange(int value, int min, int max,
+ String property, String name) {
+ if (value < min || value > max) {
+ signalViolation(property,
+ Messages.getString("Validator.must.be.in.range", name,
+ String.valueOf(min), String.valueOf(max)));
+ }
+ }
+
+ public static void checkRange(char value, char min, char max,
+ String property, String name) {
+ if (value < min || value > max) {
+ signalViolation(property, Messages.getString("Validator.must.be.in.range",
+ name, String.valueOf(min), String.valueOf(max)));
+ }
+ }
+
+ public static void checkMin(int value, int min, String property, String name) {
+ if (value < min) {
+ signalViolation(property,
+ Messages.getString("Validator.must.be.at.least", name,
+ String.valueOf(min)));
+ }
+ }
+
+ public static void checkIn(String s, String[] strings, String property,
+ String name) {
+ if (isEmpty(s)) {
+ signalViolation(property,
+ Messages.getString("Validator.empty.field", name));
+ }
+ List list = Arrays.asList(strings);
+ if (!list.contains(s)) {
+ signalViolation(property,
+ Messages.getString("Validator.invalid.option", name, list.toString()));
+ }
+ }
+
+ public static void checkTrue(boolean condition, String property, String msg) {
+ if (!condition) {
+ signalViolation(property, msg);
+ }
+ }
+
+ public static void checkFalse(boolean condition, String property, String msg) {
+ if (condition) {
+ signalViolation(property, msg);
+ }
+ }
+
+ public static void checkElementsNotNullUnique(Collection c, String property,
+ String msg) {
+ if (c.contains(null)
+ || new HashSet(c).size() != c.size()) {
+ signalViolation(property,
+ Messages.getString("Validator.already.exists", msg));
+ }
+ }
+
+ public static void checkElementsUnique(Collection c, String property, String msg) {
+ if (new HashSet(c).size() != c.size()) {
+ signalViolation(property,
+ Messages.getString("Validator.already.exists", msg));
+ }
+ }
+
+ public static void checkFile(File f, String property, String fileDescription) {
+ File cfgPath = ConfigPersister.getInstance().getConfigPath();
+ if (f == null
+ || f.getPath().equals("")
+ || (!f.exists() && !Util.getAbsoluteFile(cfgPath, f).exists())) {
+ signalViolation(property,
+ Messages.getString("Validator.doesnt.exist", fileDescription));
+ }
+ }
+
+ public static void checkOptFile(File f, String property, String fileDescription) {
+ if (f != null && f.getPath().length() > 0) {
+ checkFile(f, property, fileDescription);
+ }
+ }
+
+ public static void checkRelativeWinPath(String path, String property, String msg) {
+ if (path == null
+ || path.equals("")
+ || path.startsWith("/")
+ || path.startsWith("\\")
+ || path.indexOf(':') != -1) {
+ signalViolation(property, msg);
+ }
+ }
+
+ public static void signalLengthViolation(String property, String name,
+ int maxLength) {
+ signalViolation(property,
+ Messages.getString("Validator.exceeds.max.length", name,
+ String.valueOf(maxLength)));
+ }
+
+ public static void signalViolation(String property, String msg) {
+ throw new InvariantViolationException(property, msg);
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/messages.properties b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/messages.properties
old mode 100755
new mode 100644
index adb5a8886b7..325bb3bee4d
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/messages.properties
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/messages.properties
@@ -1,52 +1,52 @@
-#
-# Launch4j (http://launch4j.sourceforge.net/)
-# Cross-platform Java application wrapper for creating Windows native executables.
-#
-# Copyright (c) 2004, 2007 Grzegorz Kowal
-#
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without modification,
-# are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-# this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-# this list of conditions and the following disclaimer in the documentation
-# and/or other materials provided with the distribution.
-# * Neither the name of the Launch4j nor the names of its contributors
-# may be used to endorse or promote products derived from this software without
-# specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-
-OptComponentBinding.must.implement=Optional component must implement
-
-Validator.empty.field=Enter: {0}
-Validator.invalid.data=Invalid data: {0}
-Validator.must.be.in.range={0} must be in range [{1}-{2}]
-Validator.must.be.at.least={0} must be at least
-Validator.already.exists={0} already exists.
-Validator.doesnt.exist={0} doesn''t exist.
-Validator.exceeds.max.length={0} exceeds the maximum length of {1} characters.
-Validator.invalid.option={0} must be one of [{1}]
-
-Bindings.duplicate.binding=Duplicate binding
-
-JRadioButtonBinding.property.null=Property is null
-JRadioButtonBinding.nothing.selected=Nothing selected
-JRadioButtonBinding.index.out.of.bounds=Button index out of bounds
-
-JComboBoxBinding.property.null=Property is null
-JComboBoxBinding.index.out.of.bounds=Combo box index out of bounds
+#
+# Launch4j (http://launch4j.sourceforge.net/)
+# Cross-platform Java application wrapper for creating Windows native executables.
+#
+# Copyright (c) 2004, 2007 Grzegorz Kowal
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification,
+# are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Launch4j nor the names of its contributors
+# may be used to endorse or promote products derived from this software without
+# specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+OptComponentBinding.must.implement=Optional component must implement
+
+Validator.empty.field=Enter: {0}
+Validator.invalid.data=Invalid data: {0}
+Validator.must.be.in.range={0} must be in range [{1}-{2}]
+Validator.must.be.at.least={0} must be at least
+Validator.already.exists={0} already exists.
+Validator.doesnt.exist={0} doesn''t exist.
+Validator.exceeds.max.length={0} exceeds the maximum length of {1} characters.
+Validator.invalid.option={0} must be one of [{1}]
+
+Bindings.duplicate.binding=Duplicate binding
+
+JRadioButtonBinding.property.null=Property is null
+JRadioButtonBinding.nothing.selected=Nothing selected
+JRadioButtonBinding.index.out.of.bounds=Button index out of bounds
+
+JComboBoxBinding.property.null=Property is null
+JComboBoxBinding.index.out.of.bounds=Combo box index out of bounds
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/messages_es.properties b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/messages_es.properties
old mode 100755
new mode 100644
index e2e50fcb46d..f0c2b323377
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/messages_es.properties
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/binding/messages_es.properties
@@ -1,51 +1,51 @@
-#
-# Launch4j (http://launch4j.sourceforge.net/)
-# Cross-platform Java application wrapper for creating Windows native executables.
-#
-# Copyright (c) 2004, 2007 Grzegorz Kowal, Patricio Mart�nez Ros
-#
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without modification,
-# are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-# this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-# this list of conditions and the following disclaimer in the documentation
-# and/or other materials provided with the distribution.
-# * Neither the name of the Launch4j nor the names of its contributors
-# may be used to endorse or promote products derived from this software without
-# specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-
-OptComponentBinding.must.implement=El componente opcional debe ser implementado
-
-Validator.empty.field=Introduzca: {0}
-Validator.invalid.data=Dato no v�lido: {0}
-Validator.must.be.in.range={0} debe estar en el rango [{1}-{2}]
-Validator.must.be.at.least={0} deb ser al menos
-Validator.already.exists={0} ya existe.
-Validator.doesnt.exist={0} no existe.
-Validator.exceeds.max.length={0} excede la longitud m�xima de {1} caracteres.
-Validator.invalid.option={0} must be one of [{1}]
-
-Bindings.duplicate.binding=Binding duplicado
-
-JRadioButtonBinding.property.null=La propiedad es nula
-JRadioButtonBinding.nothing.selected=Nada seleccionado
-JRadioButtonBinding.index.out.of.bounds=�ndice de bot�n fuera de l�mite
-JComboBoxBinding.property.null=Property is null
-JComboBoxBinding.index.out.of.bounds=Combo box index out of bounds
+#
+# Launch4j (http://launch4j.sourceforge.net/)
+# Cross-platform Java application wrapper for creating Windows native executables.
+#
+# Copyright (c) 2004, 2007 Grzegorz Kowal, Patricio Mart�nez Ros
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification,
+# are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Launch4j nor the names of its contributors
+# may be used to endorse or promote products derived from this software without
+# specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+OptComponentBinding.must.implement=El componente opcional debe ser implementado
+
+Validator.empty.field=Introduzca: {0}
+Validator.invalid.data=Dato no v�lido: {0}
+Validator.must.be.in.range={0} debe estar en el rango [{1}-{2}]
+Validator.must.be.at.least={0} deb ser al menos
+Validator.already.exists={0} ya existe.
+Validator.doesnt.exist={0} no existe.
+Validator.exceeds.max.length={0} excede la longitud m�xima de {1} caracteres.
+Validator.invalid.option={0} must be one of [{1}]
+
+Bindings.duplicate.binding=Binding duplicado
+
+JRadioButtonBinding.property.null=La propiedad es nula
+JRadioButtonBinding.nothing.selected=Nada seleccionado
+JRadioButtonBinding.index.out.of.bounds=�ndice de bot�n fuera de l�mite
+JComboBoxBinding.property.null=Property is null
+JComboBoxBinding.index.out.of.bounds=Combo box index out of bounds
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/config/ClassPath.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/config/ClassPath.java
old mode 100755
new mode 100644
index da7dbd6c453..19bdaeef530
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/config/ClassPath.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/config/ClassPath.java
@@ -1,87 +1,87 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on May 1, 2006
- */
-package net.sf.launch4j.config;
-
-import java.util.List;
-
-import net.sf.launch4j.binding.IValidatable;
-import net.sf.launch4j.binding.Validator;
-
-/**
- * @author Copyright (C) 2006 Grzegorz Kowal
- */
-public class ClassPath implements IValidatable {
- private String mainClass;
- private List paths;
-
- public void checkInvariants() {
- Validator.checkString(mainClass, Validator.MAX_PATH, "mainClass",
- Messages.getString("ClassPath.mainClass"));
- Validator.checkOptStrings(paths,
- Validator.MAX_PATH,
- Validator.MAX_BIG_STR,
- "paths",
- Messages.getString("ClassPath.path"));
- }
-
- public String getMainClass() {
- return mainClass;
- }
-
- public void setMainClass(String mainClass) {
- this.mainClass = mainClass;
- }
-
- public List getPaths() {
- return paths;
- }
-
- public void setPaths(List paths) {
- this.paths = paths;
- }
-
- public String getPathsString() {
- StringBuffer sb = new StringBuffer();
- for (int i = 0; i < paths.size(); i++) {
- sb.append(paths.get(i));
- if (i < paths.size() - 1) {
- sb.append(';');
- }
- }
- return sb.toString();
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on May 1, 2006
+ */
+package net.sf.launch4j.config;
+
+import java.util.List;
+
+import net.sf.launch4j.binding.IValidatable;
+import net.sf.launch4j.binding.Validator;
+
+/**
+ * @author Copyright (C) 2006 Grzegorz Kowal
+ */
+public class ClassPath implements IValidatable {
+ private String mainClass;
+ private List paths;
+
+ public void checkInvariants() {
+ Validator.checkString(mainClass, Validator.MAX_PATH, "mainClass",
+ Messages.getString("ClassPath.mainClass"));
+ Validator.checkOptStrings(paths,
+ Validator.MAX_PATH,
+ Validator.MAX_BIG_STR,
+ "paths",
+ Messages.getString("ClassPath.path"));
+ }
+
+ public String getMainClass() {
+ return mainClass;
+ }
+
+ public void setMainClass(String mainClass) {
+ this.mainClass = mainClass;
+ }
+
+ public List getPaths() {
+ return paths;
+ }
+
+ public void setPaths(List paths) {
+ this.paths = paths;
+ }
+
+ public String getPathsString() {
+ StringBuffer sb = new StringBuffer();
+ for (int i = 0; i < paths.size(); i++) {
+ sb.append(paths.get(i));
+ if (i < paths.size() - 1) {
+ sb.append(';');
+ }
+ }
+ return sb.toString();
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/config/Config.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/config/Config.java
old mode 100755
new mode 100644
index 27633bfb4cf..c16d3e5ff6e
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/config/Config.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/config/Config.java
@@ -1,396 +1,396 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on Apr 21, 2005
- */
-package net.sf.launch4j.config;
-
-import java.io.File;
-import java.util.Arrays;
-import java.util.List;
-
-import net.sf.launch4j.binding.IValidatable;
-import net.sf.launch4j.binding.Validator;
-
-/**
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public class Config implements IValidatable {
-
- // 1.x config properties_____________________________________________________________
- public static final String HEADER = "header";
- public static final String JAR = "jar";
- public static final String OUTFILE = "outfile";
- public static final String ERR_TITLE = "errTitle";
- public static final String JAR_ARGS = "jarArgs";
- public static final String CHDIR = "chdir";
- public static final String CUSTOM_PROC_NAME = "customProcName";
- public static final String STAY_ALIVE = "stayAlive";
- public static final String ICON = "icon";
-
- // __________________________________________________________________________________
- public static final String DOWNLOAD_URL = "http://java.com/download";
-
- public static final String GUI_HEADER = "gui";
- public static final String CONSOLE_HEADER = "console";
-
- private static final String[] HEADER_TYPES = new String[] { GUI_HEADER,
- CONSOLE_HEADER };
-
- private static final String[] PRIORITY_CLASS_NAMES = new String[] { "normal",
- "idle",
- "high" };
-
- private static final int[] PRIORITY_CLASSES = new int[] { 0x00000020,
- 0x00000040,
- 0x00000080 };
-
- private boolean dontWrapJar;
- private String headerType = GUI_HEADER;
- private List headerObjects;
- private List libs;
- private File jar;
- private File outfile;
-
- // Runtime header configuration
- private String errTitle;
- private String cmdLine;
- private String chdir;
- private String priority;
- private String downloadUrl;
- private String supportUrl;
- private boolean customProcName;
- private boolean stayAlive;
- private File manifest;
- private File icon;
- private List variables;
- private SingleInstance singleInstance;
- private ClassPath classPath;
- private Jre jre;
- private Splash splash;
- private VersionInfo versionInfo;
- private Msg messages;
-
- public void checkInvariants() {
- Validator.checkTrue(outfile != null && outfile.getPath().endsWith(".exe"),
- "outfile", Messages.getString("Config.specify.output.exe"));
- if (dontWrapJar) {
- if (jar != null && !jar.getPath().equals("")) {
- Validator.checkRelativeWinPath(jar.getPath(), "jar",
- Messages.getString("Config.application.jar.path"));
- } else {
- Validator.checkTrue(classPath != null, "classPath",
- Messages.getString("ClassPath.or.jar"));
- }
- } else {
- Validator.checkFile(jar, "jar",
- Messages.getString("Config.application.jar"));
- }
- if (!Validator.isEmpty(chdir)) {
- Validator.checkRelativeWinPath(chdir, "chdir",
- Messages.getString("Config.chdir.relative"));
- Validator.checkFalse(chdir.toLowerCase().equals("true")
- || chdir.toLowerCase().equals("false"),
- "chdir", Messages.getString("Config.chdir.path"));
- }
- Validator.checkOptFile(manifest, "manifest", Messages.getString("Config.manifest"));
- Validator.checkOptFile(icon, "icon", Messages.getString("Config.icon"));
- Validator.checkOptString(cmdLine, Validator.MAX_BIG_STR, "jarArgs",
- Messages.getString("Config.jar.arguments"));
- Validator.checkOptString(errTitle, Validator.MAX_STR, "errTitle",
- Messages.getString("Config.error.title"));
- Validator.checkOptString(downloadUrl, 256,
- "downloadUrl", Messages.getString("Config.download.url"));
- Validator.checkOptString(supportUrl, 256,
- "supportUrl", Messages.getString("Config.support.url"));
- Validator.checkIn(getHeaderType(), HEADER_TYPES, "headerType",
- Messages.getString("Config.header.type"));
- Validator.checkFalse(getHeaderType().equals(CONSOLE_HEADER) && splash != null,
- "headerType",
- Messages.getString("Config.splash.not.impl.by.console.hdr"));
- Validator.checkOptStrings(variables,
- Validator.MAX_ARGS,
- Validator.MAX_ARGS,
- "[^=%\t]+=[^=\t]+",
- "variables",
- Messages.getString("Config.variables"),
- Messages.getString("Config.variables.err"));
- Validator.checkIn(getPriority(), PRIORITY_CLASS_NAMES, "priority",
- Messages.getString("Config.priority"));
- jre.checkInvariants();
- }
-
- public void validate() {
- checkInvariants();
- if (classPath != null) {
- classPath.checkInvariants();
- }
- if (splash != null) {
- splash.checkInvariants();
- }
- if (versionInfo != null) {
- versionInfo.checkInvariants();
- }
- }
-
- /** Change current directory to EXE location. */
- public String getChdir() {
- return chdir;
- }
-
- public void setChdir(String chdir) {
- this.chdir = chdir;
- }
-
- /** Constant command line arguments passed to the application. */
- public String getCmdLine() {
- return cmdLine;
- }
-
- public void setCmdLine(String cmdLine) {
- this.cmdLine = cmdLine;
- }
-
- /** Optional, error message box title. */
- public String getErrTitle() {
- return errTitle;
- }
-
- public void setErrTitle(String errTitle) {
- this.errTitle = errTitle;
- }
-
- /** launch4j header file. */
- public String getHeaderType() {
- return headerType.toLowerCase();
- }
-
- public void setHeaderType(String headerType) {
- this.headerType = headerType;
- }
-
- /** launch4j header file index - used by GUI. */
- public int getHeaderTypeIndex() {
- int x = Arrays.asList(HEADER_TYPES).indexOf(getHeaderType());
- return x != -1 ? x : 0;
- }
-
- public void setHeaderTypeIndex(int headerTypeIndex) {
- headerType = HEADER_TYPES[headerTypeIndex];
- }
-
- public boolean isCustomHeaderObjects() {
- return headerObjects != null && !headerObjects.isEmpty();
- }
-
- public List getHeaderObjects() {
- return isCustomHeaderObjects() ? headerObjects
- : getHeaderType().equals(GUI_HEADER)
- ? LdDefaults.GUI_HEADER_OBJECTS
- : LdDefaults.CONSOLE_HEADER_OBJECTS;
- }
-
- public void setHeaderObjects(List headerObjects) {
- this.headerObjects = headerObjects;
- }
-
- public boolean isCustomLibs() {
- return libs != null && !libs.isEmpty();
- }
-
- public List getLibs() {
- return isCustomLibs() ? libs : LdDefaults.LIBS;
- }
-
- public void setLibs(List libs) {
- this.libs = libs;
- }
-
- /** Wrapper's manifest for User Account Control. */
- public File getManifest() {
- return manifest;
- }
-
- public void setManifest(File manifest) {
- this.manifest = manifest;
- }
-
- /** ICO file. */
- public File getIcon() {
- return icon;
- }
-
- public void setIcon(File icon) {
- this.icon = icon;
- }
-
- /** Jar to wrap. */
- public File getJar() {
- return jar;
- }
-
- public void setJar(File jar) {
- this.jar = jar;
- }
-
- public List getVariables() {
- return variables;
- }
-
- public void setVariables(List variables) {
- this.variables = variables;
- }
-
- public ClassPath getClassPath() {
- return classPath;
- }
-
- public void setClassPath(ClassPath classpath) {
- this.classPath = classpath;
- }
-
- /** JRE configuration */
- public Jre getJre() {
- return jre;
- }
-
- public void setJre(Jre jre) {
- this.jre = jre;
- }
-
- /** Output EXE file. */
- public File getOutfile() {
- return outfile;
- }
-
- public void setOutfile(File outfile) {
- this.outfile = outfile;
- }
-
- /** Custom process name as the output EXE file name. */
- public boolean isCustomProcName() {
- return customProcName;
- }
-
- public void setCustomProcName(boolean customProcName) {
- this.customProcName = customProcName;
- }
-
- /** Splash screen configuration. */
- public Splash getSplash() {
- return splash;
- }
-
- public void setSplash(Splash splash) {
- this.splash = splash;
- }
-
- /** Stay alive after launching the application. */
- public boolean isStayAlive() {
- return stayAlive;
- }
-
- public void setStayAlive(boolean stayAlive) {
- this.stayAlive = stayAlive;
- }
-
- public VersionInfo getVersionInfo() {
- return versionInfo;
- }
-
- public void setVersionInfo(VersionInfo versionInfo) {
- this.versionInfo = versionInfo;
- }
-
- public boolean isDontWrapJar() {
- return dontWrapJar;
- }
-
- public void setDontWrapJar(boolean dontWrapJar) {
- this.dontWrapJar = dontWrapJar;
- }
-
- public int getPriorityIndex() {
- int x = Arrays.asList(PRIORITY_CLASS_NAMES).indexOf(getPriority());
- return x != -1 ? x : 0;
- }
-
- public void setPriorityIndex(int x) {
- priority = PRIORITY_CLASS_NAMES[x];
- }
-
- public String getPriority() {
- return Validator.isEmpty(priority) ? PRIORITY_CLASS_NAMES[0] : priority;
- }
-
- public void setPriority(String priority) {
- this.priority = priority;
- }
-
- public int getPriorityClass() {
- return PRIORITY_CLASSES[getPriorityIndex()];
- }
-
- public String getDownloadUrl() {
- return downloadUrl == null ? DOWNLOAD_URL : downloadUrl;
- }
-
- public void setDownloadUrl(String downloadUrl) {
- this.downloadUrl = downloadUrl;
- }
-
- public String getSupportUrl() {
- return supportUrl;
- }
-
- public void setSupportUrl(String supportUrl) {
- this.supportUrl = supportUrl;
- }
-
- public Msg getMessages() {
- return messages;
- }
-
- public void setMessages(Msg messages) {
- this.messages = messages;
- }
-
- public SingleInstance getSingleInstance() {
- return singleInstance;
- }
-
- public void setSingleInstance(SingleInstance singleInstance) {
- this.singleInstance = singleInstance;
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on Apr 21, 2005
+ */
+package net.sf.launch4j.config;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+
+import net.sf.launch4j.binding.IValidatable;
+import net.sf.launch4j.binding.Validator;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class Config implements IValidatable {
+
+ // 1.x config properties_____________________________________________________________
+ public static final String HEADER = "header";
+ public static final String JAR = "jar";
+ public static final String OUTFILE = "outfile";
+ public static final String ERR_TITLE = "errTitle";
+ public static final String JAR_ARGS = "jarArgs";
+ public static final String CHDIR = "chdir";
+ public static final String CUSTOM_PROC_NAME = "customProcName";
+ public static final String STAY_ALIVE = "stayAlive";
+ public static final String ICON = "icon";
+
+ // __________________________________________________________________________________
+ public static final String DOWNLOAD_URL = "http://java.com/download";
+
+ public static final String GUI_HEADER = "gui";
+ public static final String CONSOLE_HEADER = "console";
+
+ private static final String[] HEADER_TYPES = new String[] { GUI_HEADER,
+ CONSOLE_HEADER };
+
+ private static final String[] PRIORITY_CLASS_NAMES = new String[] { "normal",
+ "idle",
+ "high" };
+
+ private static final int[] PRIORITY_CLASSES = new int[] { 0x00000020,
+ 0x00000040,
+ 0x00000080 };
+
+ private boolean dontWrapJar;
+ private String headerType = GUI_HEADER;
+ private List headerObjects;
+ private List libs;
+ private File jar;
+ private File outfile;
+
+ // Runtime header configuration
+ private String errTitle;
+ private String cmdLine;
+ private String chdir;
+ private String priority;
+ private String downloadUrl;
+ private String supportUrl;
+ private boolean customProcName;
+ private boolean stayAlive;
+ private File manifest;
+ private File icon;
+ private List variables;
+ private SingleInstance singleInstance;
+ private ClassPath classPath;
+ private Jre jre;
+ private Splash splash;
+ private VersionInfo versionInfo;
+ private Msg messages;
+
+ public void checkInvariants() {
+ Validator.checkTrue(outfile != null && outfile.getPath().endsWith(".exe"),
+ "outfile", Messages.getString("Config.specify.output.exe"));
+ if (dontWrapJar) {
+ if (jar != null && !jar.getPath().equals("")) {
+ Validator.checkRelativeWinPath(jar.getPath(), "jar",
+ Messages.getString("Config.application.jar.path"));
+ } else {
+ Validator.checkTrue(classPath != null, "classPath",
+ Messages.getString("ClassPath.or.jar"));
+ }
+ } else {
+ Validator.checkFile(jar, "jar",
+ Messages.getString("Config.application.jar"));
+ }
+ if (!Validator.isEmpty(chdir)) {
+ Validator.checkRelativeWinPath(chdir, "chdir",
+ Messages.getString("Config.chdir.relative"));
+ Validator.checkFalse(chdir.toLowerCase().equals("true")
+ || chdir.toLowerCase().equals("false"),
+ "chdir", Messages.getString("Config.chdir.path"));
+ }
+ Validator.checkOptFile(manifest, "manifest", Messages.getString("Config.manifest"));
+ Validator.checkOptFile(icon, "icon", Messages.getString("Config.icon"));
+ Validator.checkOptString(cmdLine, Validator.MAX_BIG_STR, "jarArgs",
+ Messages.getString("Config.jar.arguments"));
+ Validator.checkOptString(errTitle, Validator.MAX_STR, "errTitle",
+ Messages.getString("Config.error.title"));
+ Validator.checkOptString(downloadUrl, 256,
+ "downloadUrl", Messages.getString("Config.download.url"));
+ Validator.checkOptString(supportUrl, 256,
+ "supportUrl", Messages.getString("Config.support.url"));
+ Validator.checkIn(getHeaderType(), HEADER_TYPES, "headerType",
+ Messages.getString("Config.header.type"));
+ Validator.checkFalse(getHeaderType().equals(CONSOLE_HEADER) && splash != null,
+ "headerType",
+ Messages.getString("Config.splash.not.impl.by.console.hdr"));
+ Validator.checkOptStrings(variables,
+ Validator.MAX_ARGS,
+ Validator.MAX_ARGS,
+ "[^=%\t]+=[^=\t]+",
+ "variables",
+ Messages.getString("Config.variables"),
+ Messages.getString("Config.variables.err"));
+ Validator.checkIn(getPriority(), PRIORITY_CLASS_NAMES, "priority",
+ Messages.getString("Config.priority"));
+ jre.checkInvariants();
+ }
+
+ public void validate() {
+ checkInvariants();
+ if (classPath != null) {
+ classPath.checkInvariants();
+ }
+ if (splash != null) {
+ splash.checkInvariants();
+ }
+ if (versionInfo != null) {
+ versionInfo.checkInvariants();
+ }
+ }
+
+ /** Change current directory to EXE location. */
+ public String getChdir() {
+ return chdir;
+ }
+
+ public void setChdir(String chdir) {
+ this.chdir = chdir;
+ }
+
+ /** Constant command line arguments passed to the application. */
+ public String getCmdLine() {
+ return cmdLine;
+ }
+
+ public void setCmdLine(String cmdLine) {
+ this.cmdLine = cmdLine;
+ }
+
+ /** Optional, error message box title. */
+ public String getErrTitle() {
+ return errTitle;
+ }
+
+ public void setErrTitle(String errTitle) {
+ this.errTitle = errTitle;
+ }
+
+ /** launch4j header file. */
+ public String getHeaderType() {
+ return headerType.toLowerCase();
+ }
+
+ public void setHeaderType(String headerType) {
+ this.headerType = headerType;
+ }
+
+ /** launch4j header file index - used by GUI. */
+ public int getHeaderTypeIndex() {
+ int x = Arrays.asList(HEADER_TYPES).indexOf(getHeaderType());
+ return x != -1 ? x : 0;
+ }
+
+ public void setHeaderTypeIndex(int headerTypeIndex) {
+ headerType = HEADER_TYPES[headerTypeIndex];
+ }
+
+ public boolean isCustomHeaderObjects() {
+ return headerObjects != null && !headerObjects.isEmpty();
+ }
+
+ public List getHeaderObjects() {
+ return isCustomHeaderObjects() ? headerObjects
+ : getHeaderType().equals(GUI_HEADER)
+ ? LdDefaults.GUI_HEADER_OBJECTS
+ : LdDefaults.CONSOLE_HEADER_OBJECTS;
+ }
+
+ public void setHeaderObjects(List headerObjects) {
+ this.headerObjects = headerObjects;
+ }
+
+ public boolean isCustomLibs() {
+ return libs != null && !libs.isEmpty();
+ }
+
+ public List getLibs() {
+ return isCustomLibs() ? libs : LdDefaults.LIBS;
+ }
+
+ public void setLibs(List libs) {
+ this.libs = libs;
+ }
+
+ /** Wrapper's manifest for User Account Control. */
+ public File getManifest() {
+ return manifest;
+ }
+
+ public void setManifest(File manifest) {
+ this.manifest = manifest;
+ }
+
+ /** ICO file. */
+ public File getIcon() {
+ return icon;
+ }
+
+ public void setIcon(File icon) {
+ this.icon = icon;
+ }
+
+ /** Jar to wrap. */
+ public File getJar() {
+ return jar;
+ }
+
+ public void setJar(File jar) {
+ this.jar = jar;
+ }
+
+ public List getVariables() {
+ return variables;
+ }
+
+ public void setVariables(List variables) {
+ this.variables = variables;
+ }
+
+ public ClassPath getClassPath() {
+ return classPath;
+ }
+
+ public void setClassPath(ClassPath classpath) {
+ this.classPath = classpath;
+ }
+
+ /** JRE configuration */
+ public Jre getJre() {
+ return jre;
+ }
+
+ public void setJre(Jre jre) {
+ this.jre = jre;
+ }
+
+ /** Output EXE file. */
+ public File getOutfile() {
+ return outfile;
+ }
+
+ public void setOutfile(File outfile) {
+ this.outfile = outfile;
+ }
+
+ /** Custom process name as the output EXE file name. */
+ public boolean isCustomProcName() {
+ return customProcName;
+ }
+
+ public void setCustomProcName(boolean customProcName) {
+ this.customProcName = customProcName;
+ }
+
+ /** Splash screen configuration. */
+ public Splash getSplash() {
+ return splash;
+ }
+
+ public void setSplash(Splash splash) {
+ this.splash = splash;
+ }
+
+ /** Stay alive after launching the application. */
+ public boolean isStayAlive() {
+ return stayAlive;
+ }
+
+ public void setStayAlive(boolean stayAlive) {
+ this.stayAlive = stayAlive;
+ }
+
+ public VersionInfo getVersionInfo() {
+ return versionInfo;
+ }
+
+ public void setVersionInfo(VersionInfo versionInfo) {
+ this.versionInfo = versionInfo;
+ }
+
+ public boolean isDontWrapJar() {
+ return dontWrapJar;
+ }
+
+ public void setDontWrapJar(boolean dontWrapJar) {
+ this.dontWrapJar = dontWrapJar;
+ }
+
+ public int getPriorityIndex() {
+ int x = Arrays.asList(PRIORITY_CLASS_NAMES).indexOf(getPriority());
+ return x != -1 ? x : 0;
+ }
+
+ public void setPriorityIndex(int x) {
+ priority = PRIORITY_CLASS_NAMES[x];
+ }
+
+ public String getPriority() {
+ return Validator.isEmpty(priority) ? PRIORITY_CLASS_NAMES[0] : priority;
+ }
+
+ public void setPriority(String priority) {
+ this.priority = priority;
+ }
+
+ public int getPriorityClass() {
+ return PRIORITY_CLASSES[getPriorityIndex()];
+ }
+
+ public String getDownloadUrl() {
+ return downloadUrl == null ? DOWNLOAD_URL : downloadUrl;
+ }
+
+ public void setDownloadUrl(String downloadUrl) {
+ this.downloadUrl = downloadUrl;
+ }
+
+ public String getSupportUrl() {
+ return supportUrl;
+ }
+
+ public void setSupportUrl(String supportUrl) {
+ this.supportUrl = supportUrl;
+ }
+
+ public Msg getMessages() {
+ return messages;
+ }
+
+ public void setMessages(Msg messages) {
+ this.messages = messages;
+ }
+
+ public SingleInstance getSingleInstance() {
+ return singleInstance;
+ }
+
+ public void setSingleInstance(SingleInstance singleInstance) {
+ this.singleInstance = singleInstance;
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/config/ConfigPersister.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/config/ConfigPersister.java
old mode 100755
new mode 100644
index 43daf86814f..b604786e484
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/config/ConfigPersister.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/config/ConfigPersister.java
@@ -1,249 +1,249 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on Apr 22, 2005
- */
-package net.sf.launch4j.config;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-
-import net.sf.launch4j.Util;
-
-import com.thoughtworks.xstream.XStream;
-import com.thoughtworks.xstream.io.xml.DomDriver;
-
-/**
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public class ConfigPersister {
-
- private static final ConfigPersister _instance = new ConfigPersister();
-
- private final XStream _xstream;
- private Config _config;
- private File _configPath;
-
- private ConfigPersister() {
- _xstream = new XStream(new DomDriver());
- _xstream.alias("launch4jConfig", Config.class);
- _xstream.alias("classPath", ClassPath.class);
- _xstream.alias("jre", Jre.class);
- _xstream.alias("splash", Splash.class);
- _xstream.alias("versionInfo", VersionInfo.class);
-
- _xstream.addImplicitCollection(Config.class, "headerObjects", "obj",
- String.class);
- _xstream.addImplicitCollection(Config.class, "libs", "lib", String.class);
- _xstream.addImplicitCollection(Config.class, "variables", "var", String.class);
- _xstream.addImplicitCollection(ClassPath.class, "paths", "cp", String.class);
- _xstream.addImplicitCollection(Jre.class, "options", "opt", String.class);
- }
-
- public static ConfigPersister getInstance() {
- return _instance;
- }
-
- public Config getConfig() {
- return _config;
- }
-
- public File getConfigPath() {
- return _configPath;
- }
-
- public File getOutputPath() throws IOException {
- if (_config.getOutfile().isAbsolute()) {
- return _config.getOutfile().getParentFile();
- }
- File parent = _config.getOutfile().getParentFile();
- return (parent != null) ? new File(_configPath, parent.getPath()) : _configPath;
- }
-
- public File getOutputFile() throws IOException {
- return _config.getOutfile().isAbsolute()
- ? _config.getOutfile()
- : new File(getOutputPath(), _config.getOutfile().getName());
- }
-
- public void createBlank() {
- _config = new Config();
- _config.setJre(new Jre());
- _configPath = null;
- }
-
- public void setAntConfig(Config c, File basedir) {
- _config = c;
- _configPath = basedir;
- }
-
- public void load(File f) throws ConfigPersisterException {
- try {
- FileReader r = new FileReader(f);
- char[] buf = new char[(int) f.length()];
- r.read(buf);
- r.close();
- // Convert 2.x config to 3.x
- String s = String.valueOf(buf)
- .replaceAll("0<", "gui<")
- .replaceAll("1<", "console<")
- .replaceAll("jarArgs>", "cmdLine>")
- .replaceAll("", "")
- .replaceAll("args>", "opt>")
- .replaceAll("", "")
- .replaceAll("false",
- "" + Jre.JDK_PREFERENCE_PREFER_JRE + "")
- .replaceAll("true",
- "" + Jre.JDK_PREFERENCE_JRE_ONLY + "")
- .replaceAll("0", "")
- .replaceAll("0", "");
- _config = (Config) _xstream.fromXML(s);
- setConfigPath(f);
- } catch (Exception e) {
- throw new ConfigPersisterException(e);
- }
- }
-
- /**
- * Imports launch4j 1.x.x config file.
- */
- public void loadVersion1(File f) throws ConfigPersisterException {
- try {
- Props props = new Props(f);
- _config = new Config();
- String header = props.getProperty(Config.HEADER);
- _config.setHeaderType(header == null
- || header.toLowerCase().equals("guihead.bin") ? Config.GUI_HEADER
- : Config.CONSOLE_HEADER);
- _config.setJar(props.getFile(Config.JAR));
- _config.setOutfile(props.getFile(Config.OUTFILE));
- _config.setJre(new Jre());
- _config.getJre().setPath(props.getProperty(Jre.PATH));
- _config.getJre().setMinVersion(props.getProperty(Jre.MIN_VERSION));
- _config.getJre().setMaxVersion(props.getProperty(Jre.MAX_VERSION));
- String args = props.getProperty(Jre.ARGS);
- if (args != null) {
- List jreOptions = new ArrayList();
- jreOptions.add(args);
- _config.getJre().setOptions(jreOptions);
- }
- _config.setCmdLine(props.getProperty(Config.JAR_ARGS));
- _config.setChdir("true".equals(props.getProperty(Config.CHDIR))
- ? "." : null);
- _config.setCustomProcName("true".equals(
- props.getProperty("setProcName"))); // 1.x
- _config.setStayAlive("true".equals(props.getProperty(Config.STAY_ALIVE)));
- _config.setErrTitle(props.getProperty(Config.ERR_TITLE));
- _config.setIcon(props.getFile(Config.ICON));
- File splashFile = props.getFile(Splash.SPLASH_FILE);
- if (splashFile != null) {
- _config.setSplash(new Splash());
- _config.getSplash().setFile(splashFile);
- String waitfor = props.getProperty("waitfor"); // 1.x
- _config.getSplash().setWaitForWindow(waitfor != null
- && !waitfor.equals(""));
- String splashTimeout = props.getProperty(Splash.TIMEOUT);
- if (splashTimeout != null) {
- _config.getSplash().setTimeout(Integer.parseInt(splashTimeout));
- }
- _config.getSplash().setTimeoutErr("true".equals(
- props.getProperty(Splash.TIMEOUT_ERR)));
- } else {
- _config.setSplash(null);
- }
- setConfigPath(f);
- } catch (IOException e) {
- throw new ConfigPersisterException(e);
- }
- }
-
- public void save(File f) throws ConfigPersisterException {
- try {
- BufferedWriter w = new BufferedWriter(new FileWriter(f));
- _xstream.toXML(_config, w);
- w.close();
- setConfigPath(f);
- } catch (Exception e) {
- throw new ConfigPersisterException(e);
- }
- }
-
- private void setConfigPath(File configFile) {
- _configPath = configFile.getAbsoluteFile().getParentFile();
- }
-
- private class Props {
- final Properties _properties = new Properties();
-
- public Props(File f) throws IOException {
- FileInputStream is = null;
- try {
- is = new FileInputStream(f);
- _properties.load(is);
- } finally {
- Util.close(is);
- }
- }
-
- /**
- * Get property and remove trailing # comments.
- */
- public String getProperty(String key) {
- String p = _properties.getProperty(key);
- if (p == null) {
- return null;
- }
- int x = p.indexOf('#');
- if (x == -1) {
- return p;
- }
- do {
- x--;
- } while (x > 0 && (p.charAt(x) == ' ' || p.charAt(x) == '\t'));
- return (x == 0) ? "" : p.substring(0, x + 1);
- }
-
- public File getFile(String key) {
- String value = getProperty(key);
- return value != null ? new File(value) : null;
- }
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on Apr 22, 2005
+ */
+package net.sf.launch4j.config;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+import net.sf.launch4j.Util;
+
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.DomDriver;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class ConfigPersister {
+
+ private static final ConfigPersister _instance = new ConfigPersister();
+
+ private final XStream _xstream;
+ private Config _config;
+ private File _configPath;
+
+ private ConfigPersister() {
+ _xstream = new XStream(new DomDriver());
+ _xstream.alias("launch4jConfig", Config.class);
+ _xstream.alias("classPath", ClassPath.class);
+ _xstream.alias("jre", Jre.class);
+ _xstream.alias("splash", Splash.class);
+ _xstream.alias("versionInfo", VersionInfo.class);
+
+ _xstream.addImplicitCollection(Config.class, "headerObjects", "obj",
+ String.class);
+ _xstream.addImplicitCollection(Config.class, "libs", "lib", String.class);
+ _xstream.addImplicitCollection(Config.class, "variables", "var", String.class);
+ _xstream.addImplicitCollection(ClassPath.class, "paths", "cp", String.class);
+ _xstream.addImplicitCollection(Jre.class, "options", "opt", String.class);
+ }
+
+ public static ConfigPersister getInstance() {
+ return _instance;
+ }
+
+ public Config getConfig() {
+ return _config;
+ }
+
+ public File getConfigPath() {
+ return _configPath;
+ }
+
+ public File getOutputPath() throws IOException {
+ if (_config.getOutfile().isAbsolute()) {
+ return _config.getOutfile().getParentFile();
+ }
+ File parent = _config.getOutfile().getParentFile();
+ return (parent != null) ? new File(_configPath, parent.getPath()) : _configPath;
+ }
+
+ public File getOutputFile() throws IOException {
+ return _config.getOutfile().isAbsolute()
+ ? _config.getOutfile()
+ : new File(getOutputPath(), _config.getOutfile().getName());
+ }
+
+ public void createBlank() {
+ _config = new Config();
+ _config.setJre(new Jre());
+ _configPath = null;
+ }
+
+ public void setAntConfig(Config c, File basedir) {
+ _config = c;
+ _configPath = basedir;
+ }
+
+ public void load(File f) throws ConfigPersisterException {
+ try {
+ FileReader r = new FileReader(f);
+ char[] buf = new char[(int) f.length()];
+ r.read(buf);
+ r.close();
+ // Convert 2.x config to 3.x
+ String s = String.valueOf(buf)
+ .replaceAll("0<", "gui<")
+ .replaceAll("1<", "console<")
+ .replaceAll("jarArgs>", "cmdLine>")
+ .replaceAll("", "")
+ .replaceAll("args>", "opt>")
+ .replaceAll("", "")
+ .replaceAll("false",
+ "" + Jre.JDK_PREFERENCE_PREFER_JRE + "")
+ .replaceAll("true",
+ "" + Jre.JDK_PREFERENCE_JRE_ONLY + "")
+ .replaceAll("0", "")
+ .replaceAll("0", "");
+ _config = (Config) _xstream.fromXML(s);
+ setConfigPath(f);
+ } catch (Exception e) {
+ throw new ConfigPersisterException(e);
+ }
+ }
+
+ /**
+ * Imports launch4j 1.x.x config file.
+ */
+ public void loadVersion1(File f) throws ConfigPersisterException {
+ try {
+ Props props = new Props(f);
+ _config = new Config();
+ String header = props.getProperty(Config.HEADER);
+ _config.setHeaderType(header == null
+ || header.toLowerCase().equals("guihead.bin") ? Config.GUI_HEADER
+ : Config.CONSOLE_HEADER);
+ _config.setJar(props.getFile(Config.JAR));
+ _config.setOutfile(props.getFile(Config.OUTFILE));
+ _config.setJre(new Jre());
+ _config.getJre().setPath(props.getProperty(Jre.PATH));
+ _config.getJre().setMinVersion(props.getProperty(Jre.MIN_VERSION));
+ _config.getJre().setMaxVersion(props.getProperty(Jre.MAX_VERSION));
+ String args = props.getProperty(Jre.ARGS);
+ if (args != null) {
+ List jreOptions = new ArrayList();
+ jreOptions.add(args);
+ _config.getJre().setOptions(jreOptions);
+ }
+ _config.setCmdLine(props.getProperty(Config.JAR_ARGS));
+ _config.setChdir("true".equals(props.getProperty(Config.CHDIR))
+ ? "." : null);
+ _config.setCustomProcName("true".equals(
+ props.getProperty("setProcName"))); // 1.x
+ _config.setStayAlive("true".equals(props.getProperty(Config.STAY_ALIVE)));
+ _config.setErrTitle(props.getProperty(Config.ERR_TITLE));
+ _config.setIcon(props.getFile(Config.ICON));
+ File splashFile = props.getFile(Splash.SPLASH_FILE);
+ if (splashFile != null) {
+ _config.setSplash(new Splash());
+ _config.getSplash().setFile(splashFile);
+ String waitfor = props.getProperty("waitfor"); // 1.x
+ _config.getSplash().setWaitForWindow(waitfor != null
+ && !waitfor.equals(""));
+ String splashTimeout = props.getProperty(Splash.TIMEOUT);
+ if (splashTimeout != null) {
+ _config.getSplash().setTimeout(Integer.parseInt(splashTimeout));
+ }
+ _config.getSplash().setTimeoutErr("true".equals(
+ props.getProperty(Splash.TIMEOUT_ERR)));
+ } else {
+ _config.setSplash(null);
+ }
+ setConfigPath(f);
+ } catch (IOException e) {
+ throw new ConfigPersisterException(e);
+ }
+ }
+
+ public void save(File f) throws ConfigPersisterException {
+ try {
+ BufferedWriter w = new BufferedWriter(new FileWriter(f));
+ _xstream.toXML(_config, w);
+ w.close();
+ setConfigPath(f);
+ } catch (Exception e) {
+ throw new ConfigPersisterException(e);
+ }
+ }
+
+ private void setConfigPath(File configFile) {
+ _configPath = configFile.getAbsoluteFile().getParentFile();
+ }
+
+ private class Props {
+ final Properties _properties = new Properties();
+
+ public Props(File f) throws IOException {
+ FileInputStream is = null;
+ try {
+ is = new FileInputStream(f);
+ _properties.load(is);
+ } finally {
+ Util.close(is);
+ }
+ }
+
+ /**
+ * Get property and remove trailing # comments.
+ */
+ public String getProperty(String key) {
+ String p = _properties.getProperty(key);
+ if (p == null) {
+ return null;
+ }
+ int x = p.indexOf('#');
+ if (x == -1) {
+ return p;
+ }
+ do {
+ x--;
+ } while (x > 0 && (p.charAt(x) == ' ' || p.charAt(x) == '\t'));
+ return (x == 0) ? "" : p.substring(0, x + 1);
+ }
+
+ public File getFile(String key) {
+ String value = getProperty(key);
+ return value != null ? new File(value) : null;
+ }
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/config/ConfigPersisterException.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/config/ConfigPersisterException.java
old mode 100755
new mode 100644
index 29940b945ff..dfc3d6f0c51
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/config/ConfigPersisterException.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/config/ConfigPersisterException.java
@@ -1,51 +1,51 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on Apr 22, 2005
- */
-package net.sf.launch4j.config;
-
-/**
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public class ConfigPersisterException extends Exception {
-
- public ConfigPersisterException(String msg, Throwable t) {
- super(msg, t);
- }
-
- public ConfigPersisterException(Throwable t) {
- super(t);
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on Apr 22, 2005
+ */
+package net.sf.launch4j.config;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class ConfigPersisterException extends Exception {
+
+ public ConfigPersisterException(String msg, Throwable t) {
+ super(msg, t);
+ }
+
+ public ConfigPersisterException(Throwable t) {
+ super(t);
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/config/Jre.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/config/Jre.java
old mode 100755
new mode 100644
index 0df45bb84a7..2a37b1f55f6
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/config/Jre.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/config/Jre.java
@@ -1,235 +1,235 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on Apr 21, 2005
- */
-package net.sf.launch4j.config;
-
-import java.util.Arrays;
-import java.util.List;
-
-import net.sf.launch4j.binding.IValidatable;
-import net.sf.launch4j.binding.Validator;
-
-/**
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public class Jre implements IValidatable {
-
- // 1.x config properties_____________________________________________________________
- public static final String PATH = "jrepath";
- public static final String MIN_VERSION = "javamin";
- public static final String MAX_VERSION = "javamax";
- public static final String ARGS = "jvmArgs";
-
- // __________________________________________________________________________________
- public static final String VERSION_PATTERN = "(\\d\\.){2}\\d(_\\d+)?";
-
- public static final String JDK_PREFERENCE_JRE_ONLY = "jreOnly";
- public static final String JDK_PREFERENCE_PREFER_JRE = "preferJre";
- public static final String JDK_PREFERENCE_PREFER_JDK = "preferJdk";
- public static final String JDK_PREFERENCE_JDK_ONLY = "jdkOnly";
-
- private static final String[] JDK_PREFERENCE_NAMES = new String[] {
- JDK_PREFERENCE_JRE_ONLY,
- JDK_PREFERENCE_PREFER_JRE,
- JDK_PREFERENCE_PREFER_JDK,
- JDK_PREFERENCE_JDK_ONLY };
-
- public static final int DEFAULT_JDK_PREFERENCE_INDEX
- = Arrays.asList(JDK_PREFERENCE_NAMES).indexOf(JDK_PREFERENCE_PREFER_JRE);
-
- private String path;
- private String minVersion;
- private String maxVersion;
- private String jdkPreference;
- private Integer initialHeapSize;
- private Integer initialHeapPercent;
- private Integer maxHeapSize;
- private Integer maxHeapPercent;
- private List options;
-
- public void checkInvariants() {
- Validator.checkOptString(minVersion, 10, VERSION_PATTERN,
- "jre.minVersion", Messages.getString("Jre.min.version"));
- Validator.checkOptString(maxVersion, 10, VERSION_PATTERN,
- "jre.maxVersion", Messages.getString("Jre.max.version"));
- if (Validator.isEmpty(path)) {
- Validator.checkFalse(Validator.isEmpty(minVersion),
- "jre.minVersion", Messages.getString("Jre.specify.jre.min.version.or.path"));
- } else {
- Validator.checkString(path, Validator.MAX_PATH,
- "jre.path", Messages.getString("Jre.bundled.path"));
- }
- if (!Validator.isEmpty(maxVersion)) {
- Validator.checkFalse(Validator.isEmpty(minVersion),
- "jre.minVersion", Messages.getString("Jre.specify.min.version"));
- Validator.checkTrue(minVersion.compareTo(maxVersion) < 0,
- "jre.maxVersion", Messages.getString("Jre.max.greater.than.min"));
- }
- Validator.checkTrue(initialHeapSize == null || maxHeapSize != null,
- "jre.maxHeapSize", Messages.getString("Jre.initial.and.max.heap"));
- Validator.checkTrue(initialHeapSize == null || initialHeapSize.intValue() > 0,
- "jre.initialHeapSize", Messages.getString("Jre.initial.heap"));
- Validator.checkTrue(maxHeapSize == null || (maxHeapSize.intValue()
- >= ((initialHeapSize != null) ? initialHeapSize.intValue() : 1)),
- "jre.maxHeapSize", Messages.getString("Jre.max.heap"));
- Validator.checkTrue(initialHeapPercent == null || maxHeapPercent != null,
- "jre.maxHeapPercent", Messages.getString("Jre.initial.and.max.heap"));
- if (initialHeapPercent != null) {
- Validator.checkRange(initialHeapPercent.intValue(), 1, 100,
- "jre.initialHeapPercent",
- Messages.getString("Jre.initial.heap.percent"));
- }
- if (maxHeapPercent != null) {
- Validator.checkRange(maxHeapPercent.intValue(),
- initialHeapPercent != null ? initialHeapPercent.intValue() : 1, 100,
- "jre.maxHeapPercent",
- Messages.getString("Jre.max.heap.percent"));
- }
- Validator.checkIn(getJdkPreference(), JDK_PREFERENCE_NAMES,
- "jre.jdkPreference", Messages.getString("Jre.jdkPreference.invalid"));
- Validator.checkOptStrings(options,
- Validator.MAX_ARGS,
- Validator.MAX_ARGS,
- "[^\"]*|([^\"]*\"[^\"]*\"[^\"]*)*",
- "jre.options",
- Messages.getString("Jre.jvm.options"),
- Messages.getString("Jre.jvm.options.unclosed.quotation"));
-
- // Quoted variable references: "[^%]*|([^%]*\"([^%]*%[^%]+%[^%]*)+\"[^%]*)*"
- Validator.checkOptStrings(options,
- Validator.MAX_ARGS,
- Validator.MAX_ARGS,
- "[^%]*|([^%]*([^%]*%[^%]+%[^%]*)+[^%]*)*",
- "jre.options",
- Messages.getString("Jre.jvm.options"),
- Messages.getString("Jre.jvm.options.variable"));
- }
-
- /** JVM options */
- public List getOptions() {
- return options;
- }
-
- public void setOptions(List options) {
- this.options = options;
- }
-
- /** Max Java version (x.x.x) */
- public String getMaxVersion() {
- return maxVersion;
- }
-
- public void setMaxVersion(String maxVersion) {
- this.maxVersion = maxVersion;
- }
-
- /** Min Java version (x.x.x) */
- public String getMinVersion() {
- return minVersion;
- }
-
- public void setMinVersion(String minVersion) {
- this.minVersion = minVersion;
- }
-
- /** Preference for standalone JRE or JDK-private JRE */
- public String getJdkPreference() {
- return Validator.isEmpty(jdkPreference) ? JDK_PREFERENCE_PREFER_JRE
- : jdkPreference;
- }
-
- public void setJdkPreference(String jdkPreference) {
- this.jdkPreference = jdkPreference;
- }
-
- /** Preference for standalone JRE or JDK-private JRE */
- public int getJdkPreferenceIndex() {
- int x = Arrays.asList(JDK_PREFERENCE_NAMES).indexOf(getJdkPreference());
- return x != -1 ? x : DEFAULT_JDK_PREFERENCE_INDEX;
- }
-
- public void setJdkPreferenceIndex(int x) {
- jdkPreference = JDK_PREFERENCE_NAMES[x];
- }
-
- /** JRE path */
- public String getPath() {
- return path;
- }
-
- public void setPath(String path) {
- this.path = path;
- }
-
- /** Initial heap size in MB */
- public Integer getInitialHeapSize() {
- return initialHeapSize;
- }
-
- public void setInitialHeapSize(Integer initialHeapSize) {
- this.initialHeapSize = getInteger(initialHeapSize);
- }
-
- /** Max heap size in MB */
- public Integer getMaxHeapSize() {
- return maxHeapSize;
- }
-
- public void setMaxHeapSize(Integer maxHeapSize) {
- this.maxHeapSize = getInteger(maxHeapSize);
- }
-
- public Integer getInitialHeapPercent() {
- return initialHeapPercent;
- }
-
- public void setInitialHeapPercent(Integer initialHeapPercent) {
- this.initialHeapPercent = getInteger(initialHeapPercent);
- }
-
- public Integer getMaxHeapPercent() {
- return maxHeapPercent;
- }
-
- public void setMaxHeapPercent(Integer maxHeapPercent) {
- this.maxHeapPercent = getInteger(maxHeapPercent);
- }
-
- /** Convert 0 to null */
- private Integer getInteger(Integer i) {
- return i != null && i.intValue() == 0 ? null : i;
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on Apr 21, 2005
+ */
+package net.sf.launch4j.config;
+
+import java.util.Arrays;
+import java.util.List;
+
+import net.sf.launch4j.binding.IValidatable;
+import net.sf.launch4j.binding.Validator;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class Jre implements IValidatable {
+
+ // 1.x config properties_____________________________________________________________
+ public static final String PATH = "jrepath";
+ public static final String MIN_VERSION = "javamin";
+ public static final String MAX_VERSION = "javamax";
+ public static final String ARGS = "jvmArgs";
+
+ // __________________________________________________________________________________
+ public static final String VERSION_PATTERN = "(\\d\\.){2}\\d(_\\d+)?";
+
+ public static final String JDK_PREFERENCE_JRE_ONLY = "jreOnly";
+ public static final String JDK_PREFERENCE_PREFER_JRE = "preferJre";
+ public static final String JDK_PREFERENCE_PREFER_JDK = "preferJdk";
+ public static final String JDK_PREFERENCE_JDK_ONLY = "jdkOnly";
+
+ private static final String[] JDK_PREFERENCE_NAMES = new String[] {
+ JDK_PREFERENCE_JRE_ONLY,
+ JDK_PREFERENCE_PREFER_JRE,
+ JDK_PREFERENCE_PREFER_JDK,
+ JDK_PREFERENCE_JDK_ONLY };
+
+ public static final int DEFAULT_JDK_PREFERENCE_INDEX
+ = Arrays.asList(JDK_PREFERENCE_NAMES).indexOf(JDK_PREFERENCE_PREFER_JRE);
+
+ private String path;
+ private String minVersion;
+ private String maxVersion;
+ private String jdkPreference;
+ private Integer initialHeapSize;
+ private Integer initialHeapPercent;
+ private Integer maxHeapSize;
+ private Integer maxHeapPercent;
+ private List options;
+
+ public void checkInvariants() {
+ Validator.checkOptString(minVersion, 10, VERSION_PATTERN,
+ "jre.minVersion", Messages.getString("Jre.min.version"));
+ Validator.checkOptString(maxVersion, 10, VERSION_PATTERN,
+ "jre.maxVersion", Messages.getString("Jre.max.version"));
+ if (Validator.isEmpty(path)) {
+ Validator.checkFalse(Validator.isEmpty(minVersion),
+ "jre.minVersion", Messages.getString("Jre.specify.jre.min.version.or.path"));
+ } else {
+ Validator.checkString(path, Validator.MAX_PATH,
+ "jre.path", Messages.getString("Jre.bundled.path"));
+ }
+ if (!Validator.isEmpty(maxVersion)) {
+ Validator.checkFalse(Validator.isEmpty(minVersion),
+ "jre.minVersion", Messages.getString("Jre.specify.min.version"));
+ Validator.checkTrue(minVersion.compareTo(maxVersion) < 0,
+ "jre.maxVersion", Messages.getString("Jre.max.greater.than.min"));
+ }
+ Validator.checkTrue(initialHeapSize == null || maxHeapSize != null,
+ "jre.maxHeapSize", Messages.getString("Jre.initial.and.max.heap"));
+ Validator.checkTrue(initialHeapSize == null || initialHeapSize.intValue() > 0,
+ "jre.initialHeapSize", Messages.getString("Jre.initial.heap"));
+ Validator.checkTrue(maxHeapSize == null || (maxHeapSize.intValue()
+ >= ((initialHeapSize != null) ? initialHeapSize.intValue() : 1)),
+ "jre.maxHeapSize", Messages.getString("Jre.max.heap"));
+ Validator.checkTrue(initialHeapPercent == null || maxHeapPercent != null,
+ "jre.maxHeapPercent", Messages.getString("Jre.initial.and.max.heap"));
+ if (initialHeapPercent != null) {
+ Validator.checkRange(initialHeapPercent.intValue(), 1, 100,
+ "jre.initialHeapPercent",
+ Messages.getString("Jre.initial.heap.percent"));
+ }
+ if (maxHeapPercent != null) {
+ Validator.checkRange(maxHeapPercent.intValue(),
+ initialHeapPercent != null ? initialHeapPercent.intValue() : 1, 100,
+ "jre.maxHeapPercent",
+ Messages.getString("Jre.max.heap.percent"));
+ }
+ Validator.checkIn(getJdkPreference(), JDK_PREFERENCE_NAMES,
+ "jre.jdkPreference", Messages.getString("Jre.jdkPreference.invalid"));
+ Validator.checkOptStrings(options,
+ Validator.MAX_ARGS,
+ Validator.MAX_ARGS,
+ "[^\"]*|([^\"]*\"[^\"]*\"[^\"]*)*",
+ "jre.options",
+ Messages.getString("Jre.jvm.options"),
+ Messages.getString("Jre.jvm.options.unclosed.quotation"));
+
+ // Quoted variable references: "[^%]*|([^%]*\"([^%]*%[^%]+%[^%]*)+\"[^%]*)*"
+ Validator.checkOptStrings(options,
+ Validator.MAX_ARGS,
+ Validator.MAX_ARGS,
+ "[^%]*|([^%]*([^%]*%[^%]+%[^%]*)+[^%]*)*",
+ "jre.options",
+ Messages.getString("Jre.jvm.options"),
+ Messages.getString("Jre.jvm.options.variable"));
+ }
+
+ /** JVM options */
+ public List getOptions() {
+ return options;
+ }
+
+ public void setOptions(List options) {
+ this.options = options;
+ }
+
+ /** Max Java version (x.x.x) */
+ public String getMaxVersion() {
+ return maxVersion;
+ }
+
+ public void setMaxVersion(String maxVersion) {
+ this.maxVersion = maxVersion;
+ }
+
+ /** Min Java version (x.x.x) */
+ public String getMinVersion() {
+ return minVersion;
+ }
+
+ public void setMinVersion(String minVersion) {
+ this.minVersion = minVersion;
+ }
+
+ /** Preference for standalone JRE or JDK-private JRE */
+ public String getJdkPreference() {
+ return Validator.isEmpty(jdkPreference) ? JDK_PREFERENCE_PREFER_JRE
+ : jdkPreference;
+ }
+
+ public void setJdkPreference(String jdkPreference) {
+ this.jdkPreference = jdkPreference;
+ }
+
+ /** Preference for standalone JRE or JDK-private JRE */
+ public int getJdkPreferenceIndex() {
+ int x = Arrays.asList(JDK_PREFERENCE_NAMES).indexOf(getJdkPreference());
+ return x != -1 ? x : DEFAULT_JDK_PREFERENCE_INDEX;
+ }
+
+ public void setJdkPreferenceIndex(int x) {
+ jdkPreference = JDK_PREFERENCE_NAMES[x];
+ }
+
+ /** JRE path */
+ public String getPath() {
+ return path;
+ }
+
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+ /** Initial heap size in MB */
+ public Integer getInitialHeapSize() {
+ return initialHeapSize;
+ }
+
+ public void setInitialHeapSize(Integer initialHeapSize) {
+ this.initialHeapSize = getInteger(initialHeapSize);
+ }
+
+ /** Max heap size in MB */
+ public Integer getMaxHeapSize() {
+ return maxHeapSize;
+ }
+
+ public void setMaxHeapSize(Integer maxHeapSize) {
+ this.maxHeapSize = getInteger(maxHeapSize);
+ }
+
+ public Integer getInitialHeapPercent() {
+ return initialHeapPercent;
+ }
+
+ public void setInitialHeapPercent(Integer initialHeapPercent) {
+ this.initialHeapPercent = getInteger(initialHeapPercent);
+ }
+
+ public Integer getMaxHeapPercent() {
+ return maxHeapPercent;
+ }
+
+ public void setMaxHeapPercent(Integer maxHeapPercent) {
+ this.maxHeapPercent = getInteger(maxHeapPercent);
+ }
+
+ /** Convert 0 to null */
+ private Integer getInteger(Integer i) {
+ return i != null && i.intValue() == 0 ? null : i;
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/config/LdDefaults.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/config/LdDefaults.java
old mode 100755
new mode 100644
index 55f457cc3fc..7552e3ca5a6
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/config/LdDefaults.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/config/LdDefaults.java
@@ -1,62 +1,62 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on Sep 3, 2005
- */
-package net.sf.launch4j.config;
-
-import java.util.Arrays;
-import java.util.List;
-
-public class LdDefaults {
-
- public static final List GUI_HEADER_OBJECTS = Arrays.asList(new String[] {
- "w32api/crt2.o",
- "head/guihead.o",
- "head/head.o" });
-
- public static final List CONSOLE_HEADER_OBJECTS = Arrays.asList(new String[] {
- "w32api/crt2.o",
- "head/consolehead.o",
- "head/head.o"});
-
- public static final List LIBS = Arrays.asList(new String[] {
- "w32api/libmingw32.a",
- "w32api/libgcc.a",
- "w32api/libmsvcrt.a",
- "w32api/libkernel32.a",
- "w32api/libuser32.a",
- "w32api/libadvapi32.a",
- "w32api/libshell32.a" });
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on Sep 3, 2005
+ */
+package net.sf.launch4j.config;
+
+import java.util.Arrays;
+import java.util.List;
+
+public class LdDefaults {
+
+ public static final List GUI_HEADER_OBJECTS = Arrays.asList(new String[] {
+ "w32api/crt2.o",
+ "head/guihead.o",
+ "head/head.o" });
+
+ public static final List CONSOLE_HEADER_OBJECTS = Arrays.asList(new String[] {
+ "w32api/crt2.o",
+ "head/consolehead.o",
+ "head/head.o"});
+
+ public static final List LIBS = Arrays.asList(new String[] {
+ "w32api/libmingw32.a",
+ "w32api/libgcc.a",
+ "w32api/libmsvcrt.a",
+ "w32api/libkernel32.a",
+ "w32api/libuser32.a",
+ "w32api/libadvapi32.a",
+ "w32api/libshell32.a" });
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/config/Messages.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/config/Messages.java
old mode 100755
new mode 100644
index a3f344e59c9..dab9480168d
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/config/Messages.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/config/Messages.java
@@ -1,78 +1,78 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package net.sf.launch4j.config;
-
-import java.text.MessageFormat;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-public class Messages {
- private static final String BUNDLE_NAME = "net.sf.launch4j.config.messages";
-
- private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
- .getBundle(BUNDLE_NAME);
- private static final MessageFormat FORMATTER = new MessageFormat("");
-
- private Messages() {
- }
-
- public static String getString(String key) {
- try {
- return RESOURCE_BUNDLE.getString(key);
- } catch (MissingResourceException e) {
- return '!' + key + '!';
- }
- }
-
- public static String getString(String key, String arg0) {
- return getString(key, new Object[] {arg0});
- }
-
- public static String getString(String key, String arg0, String arg1) {
- return getString(key, new Object[] {arg0, arg1});
- }
-
- public static String getString(String key, String arg0, String arg1, String arg2) {
- return getString(key, new Object[] {arg0, arg1, arg2});
- }
-
- public static String getString(String key, Object[] args) {
- try {
- FORMATTER.applyPattern(RESOURCE_BUNDLE.getString(key));
- return FORMATTER.format(args);
- } catch (MissingResourceException e) {
- return '!' + key + '!';
- }
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+package net.sf.launch4j.config;
+
+import java.text.MessageFormat;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+public class Messages {
+ private static final String BUNDLE_NAME = "net.sf.launch4j.config.messages";
+
+ private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
+ .getBundle(BUNDLE_NAME);
+ private static final MessageFormat FORMATTER = new MessageFormat("");
+
+ private Messages() {
+ }
+
+ public static String getString(String key) {
+ try {
+ return RESOURCE_BUNDLE.getString(key);
+ } catch (MissingResourceException e) {
+ return '!' + key + '!';
+ }
+ }
+
+ public static String getString(String key, String arg0) {
+ return getString(key, new Object[] {arg0});
+ }
+
+ public static String getString(String key, String arg0, String arg1) {
+ return getString(key, new Object[] {arg0, arg1});
+ }
+
+ public static String getString(String key, String arg0, String arg1, String arg2) {
+ return getString(key, new Object[] {arg0, arg1, arg2});
+ }
+
+ public static String getString(String key, Object[] args) {
+ try {
+ FORMATTER.applyPattern(RESOURCE_BUNDLE.getString(key));
+ return FORMATTER.format(args);
+ } catch (MissingResourceException e) {
+ return '!' + key + '!';
+ }
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/config/Msg.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/config/Msg.java
old mode 100755
new mode 100644
index ea3acfa34d8..2c646a76add
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/config/Msg.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/config/Msg.java
@@ -1,111 +1,111 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on Oct 8, 2006
- */
-package net.sf.launch4j.config;
-
-import net.sf.launch4j.binding.IValidatable;
-import net.sf.launch4j.binding.Validator;
-
-/**
- * @author Copyright (C) 2006 Grzegorz Kowal
- */
-public class Msg implements IValidatable {
- private String startupErr;
- private String bundledJreErr;
- private String jreVersionErr;
- private String launcherErr;
- private String instanceAlreadyExistsMsg;
-
- public void checkInvariants() {
- Validator.checkOptString(startupErr, 1024, "startupErr",
- Messages.getString("Msg.startupErr"));
- Validator.checkOptString(bundledJreErr, 1024, "bundledJreErr",
- Messages.getString("Msg.bundledJreErr"));
- Validator.checkOptString(jreVersionErr, 1024, "jreVersionErr",
- Messages.getString("Msg.jreVersionErr"));
- Validator.checkOptString(launcherErr, 1024, "launcherErr",
- Messages.getString("Msg.launcherErr"));
- Validator.checkOptString(instanceAlreadyExistsMsg, 1024, "instanceAlreadyExistsMsg",
- Messages.getString("Msg.instanceAlreadyExistsMsg"));
- }
-
- public String getStartupErr() {
- return !Validator.isEmpty(startupErr) ? startupErr
- : "An error occurred while starting the application.";
- }
-
- public void setStartupErr(String startupErr) {
- this.startupErr = startupErr;
- }
-
- public String getBundledJreErr() {
- return !Validator.isEmpty(bundledJreErr) ? bundledJreErr
- : "This application was configured to use a bundled Java Runtime" +
- " Environment but the runtime is missing or corrupted.";
- }
-
- public void setBundledJreErr(String bundledJreErr) {
- this.bundledJreErr = bundledJreErr;
- }
-
- public String getJreVersionErr() {
- return !Validator.isEmpty(jreVersionErr) ? jreVersionErr
- : "This application requires a Java Runtime Environment";
- }
-
- public void setJreVersionErr(String jreVersionErr) {
- this.jreVersionErr = jreVersionErr;
- }
-
- public String getLauncherErr() {
- return !Validator.isEmpty(launcherErr) ? launcherErr
- : "The registry refers to a nonexistent Java Runtime Environment" +
- " installation or the runtime is corrupted.";
- }
-
- public void setLauncherErr(String launcherErr) {
- this.launcherErr = launcherErr;
- }
-
- public String getInstanceAlreadyExistsMsg() {
- return !Validator.isEmpty(instanceAlreadyExistsMsg) ? instanceAlreadyExistsMsg
- : "An application instance is already running.";
- }
-
- public void setInstanceAlreadyExistsMsg(String instanceAlreadyExistsMsg) {
- this.instanceAlreadyExistsMsg = instanceAlreadyExistsMsg;
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on Oct 8, 2006
+ */
+package net.sf.launch4j.config;
+
+import net.sf.launch4j.binding.IValidatable;
+import net.sf.launch4j.binding.Validator;
+
+/**
+ * @author Copyright (C) 2006 Grzegorz Kowal
+ */
+public class Msg implements IValidatable {
+ private String startupErr;
+ private String bundledJreErr;
+ private String jreVersionErr;
+ private String launcherErr;
+ private String instanceAlreadyExistsMsg;
+
+ public void checkInvariants() {
+ Validator.checkOptString(startupErr, 1024, "startupErr",
+ Messages.getString("Msg.startupErr"));
+ Validator.checkOptString(bundledJreErr, 1024, "bundledJreErr",
+ Messages.getString("Msg.bundledJreErr"));
+ Validator.checkOptString(jreVersionErr, 1024, "jreVersionErr",
+ Messages.getString("Msg.jreVersionErr"));
+ Validator.checkOptString(launcherErr, 1024, "launcherErr",
+ Messages.getString("Msg.launcherErr"));
+ Validator.checkOptString(instanceAlreadyExistsMsg, 1024, "instanceAlreadyExistsMsg",
+ Messages.getString("Msg.instanceAlreadyExistsMsg"));
+ }
+
+ public String getStartupErr() {
+ return !Validator.isEmpty(startupErr) ? startupErr
+ : "An error occurred while starting the application.";
+ }
+
+ public void setStartupErr(String startupErr) {
+ this.startupErr = startupErr;
+ }
+
+ public String getBundledJreErr() {
+ return !Validator.isEmpty(bundledJreErr) ? bundledJreErr
+ : "This application was configured to use a bundled Java Runtime" +
+ " Environment but the runtime is missing or corrupted.";
+ }
+
+ public void setBundledJreErr(String bundledJreErr) {
+ this.bundledJreErr = bundledJreErr;
+ }
+
+ public String getJreVersionErr() {
+ return !Validator.isEmpty(jreVersionErr) ? jreVersionErr
+ : "This application requires a Java Runtime Environment";
+ }
+
+ public void setJreVersionErr(String jreVersionErr) {
+ this.jreVersionErr = jreVersionErr;
+ }
+
+ public String getLauncherErr() {
+ return !Validator.isEmpty(launcherErr) ? launcherErr
+ : "The registry refers to a nonexistent Java Runtime Environment" +
+ " installation or the runtime is corrupted.";
+ }
+
+ public void setLauncherErr(String launcherErr) {
+ this.launcherErr = launcherErr;
+ }
+
+ public String getInstanceAlreadyExistsMsg() {
+ return !Validator.isEmpty(instanceAlreadyExistsMsg) ? instanceAlreadyExistsMsg
+ : "An application instance is already running.";
+ }
+
+ public void setInstanceAlreadyExistsMsg(String instanceAlreadyExistsMsg) {
+ this.instanceAlreadyExistsMsg = instanceAlreadyExistsMsg;
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/config/SingleInstance.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/config/SingleInstance.java
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/config/Splash.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/config/Splash.java
old mode 100755
new mode 100644
index f736f82088e..27bf0daf45d
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/config/Splash.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/config/Splash.java
@@ -1,103 +1,103 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on Apr 21, 2005
- */
-package net.sf.launch4j.config;
-
-import java.io.File;
-
-import net.sf.launch4j.binding.IValidatable;
-import net.sf.launch4j.binding.Validator;
-
-/**
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public class Splash implements IValidatable {
-
- // 1.x config properties_____________________________________________________________
- public static final String SPLASH_FILE = "splash";
- public static final String WAIT_FOR_TITLE = "waitForTitle";
- public static final String TIMEOUT = "splashTimeout";
- public static final String TIMEOUT_ERR = "splashTimeoutErr";
-
- // __________________________________________________________________________________
- private File file;
- private boolean waitForWindow = true;
- private int timeout = 60;
- private boolean timeoutErr = true;
-
- public void checkInvariants() {
- Validator.checkFile(file, "splash.file",
- Messages.getString("Splash.splash.file"));
- Validator.checkRange(timeout, 1, 60 * 15, "splash.timeout",
- Messages.getString("Splash.splash.timeout"));
- }
-
- /** Splash screen in BMP format. */
- public File getFile() {
- return file;
- }
-
- public void setFile(File file) {
- this.file = file;
- }
-
- /** Splash timeout in seconds. */
- public int getTimeout() {
- return timeout;
- }
-
- public void setTimeout(int timeout) {
- this.timeout = timeout;
- }
-
- /** Signal error on splash timeout. */
- public boolean isTimeoutErr() {
- return timeoutErr;
- }
-
- public void setTimeoutErr(boolean timeoutErr) {
- this.timeoutErr = timeoutErr;
- }
-
- /** Hide splash screen when the child process displayes the first window. */
- public boolean getWaitForWindow() {
- return waitForWindow;
- }
-
- public void setWaitForWindow(boolean waitForWindow) {
- this.waitForWindow = waitForWindow;
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on Apr 21, 2005
+ */
+package net.sf.launch4j.config;
+
+import java.io.File;
+
+import net.sf.launch4j.binding.IValidatable;
+import net.sf.launch4j.binding.Validator;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class Splash implements IValidatable {
+
+ // 1.x config properties_____________________________________________________________
+ public static final String SPLASH_FILE = "splash";
+ public static final String WAIT_FOR_TITLE = "waitForTitle";
+ public static final String TIMEOUT = "splashTimeout";
+ public static final String TIMEOUT_ERR = "splashTimeoutErr";
+
+ // __________________________________________________________________________________
+ private File file;
+ private boolean waitForWindow = true;
+ private int timeout = 60;
+ private boolean timeoutErr = true;
+
+ public void checkInvariants() {
+ Validator.checkFile(file, "splash.file",
+ Messages.getString("Splash.splash.file"));
+ Validator.checkRange(timeout, 1, 60 * 15, "splash.timeout",
+ Messages.getString("Splash.splash.timeout"));
+ }
+
+ /** Splash screen in BMP format. */
+ public File getFile() {
+ return file;
+ }
+
+ public void setFile(File file) {
+ this.file = file;
+ }
+
+ /** Splash timeout in seconds. */
+ public int getTimeout() {
+ return timeout;
+ }
+
+ public void setTimeout(int timeout) {
+ this.timeout = timeout;
+ }
+
+ /** Signal error on splash timeout. */
+ public boolean isTimeoutErr() {
+ return timeoutErr;
+ }
+
+ public void setTimeoutErr(boolean timeoutErr) {
+ this.timeoutErr = timeoutErr;
+ }
+
+ /** Hide splash screen when the child process displayes the first window. */
+ public boolean getWaitForWindow() {
+ return waitForWindow;
+ }
+
+ public void setWaitForWindow(boolean waitForWindow) {
+ this.waitForWindow = waitForWindow;
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/config/VersionInfo.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/config/VersionInfo.java
old mode 100755
new mode 100644
index d719460c2ab..24e273d36d5
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/config/VersionInfo.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/config/VersionInfo.java
@@ -1,168 +1,168 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on May 21, 2005
- */
-package net.sf.launch4j.config;
-
-import net.sf.launch4j.binding.IValidatable;
-import net.sf.launch4j.binding.Validator;
-
-/**
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public class VersionInfo implements IValidatable {
- public static final String VERSION_PATTERN = "(\\d+\\.){3}\\d+";
-
- private String fileVersion;
- private String txtFileVersion;
- private String fileDescription;
- private String copyright;
- private String productVersion;
- private String txtProductVersion;
- private String productName;
- private String companyName;
- private String internalName;
- private String originalFilename;
-
- public void checkInvariants() {
- Validator.checkString(fileVersion, 20, VERSION_PATTERN,
- "versionInfo.fileVersion",
- Messages.getString("VersionInfo.file.version"));
- Validator.checkString(txtFileVersion, 50, "versionInfo.txtFileVersion",
- Messages.getString("VersionInfo.txt.file.version"));
- Validator.checkString(fileDescription, 150, "versionInfo.fileDescription",
- Messages.getString("VersionInfo.file.description"));
- Validator.checkString(copyright, 150, "versionInfo.copyright",
- Messages.getString("VersionInfo.copyright"));
- Validator.checkString(productVersion, 20, VERSION_PATTERN,
- "versionInfo.productVersion",
- Messages.getString("VersionInfo.product.version"));
- Validator.checkString(txtProductVersion, 50, "versionInfo.txtProductVersion",
- Messages.getString("VersionInfo.txt.product.version"));
- Validator.checkString(productName, 150, "versionInfo.productName",
- Messages.getString("VersionInfo.product.name"));
- Validator.checkOptString(companyName, 150, "versionInfo.companyName",
- Messages.getString("VersionInfo.company.name"));
- Validator.checkString(internalName, 50, "versionInfo.internalName",
- Messages.getString("VersionInfo.internal.name"));
- Validator.checkTrue(!internalName.endsWith(".exe"), "versionInfo.internalName",
- Messages.getString("VersionInfo.internal.name.not.exe"));
- Validator.checkString(originalFilename, 50, "versionInfo.originalFilename",
- Messages.getString("VersionInfo.original.filename"));
- Validator.checkTrue(originalFilename.endsWith(".exe"),
- "versionInfo.originalFilename",
- Messages.getString("VersionInfo.original.filename.exe"));
- }
-
- public String getCompanyName() {
- return companyName;
- }
-
- public void setCompanyName(String companyName) {
- this.companyName = companyName;
- }
-
- public String getCopyright() {
- return copyright;
- }
-
- public void setCopyright(String copyright) {
- this.copyright = copyright;
- }
-
- public String getFileDescription() {
- return fileDescription;
- }
-
- public void setFileDescription(String fileDescription) {
- this.fileDescription = fileDescription;
- }
-
- public String getFileVersion() {
- return fileVersion;
- }
-
- public void setFileVersion(String fileVersion) {
- this.fileVersion = fileVersion;
- }
-
- public String getInternalName() {
- return internalName;
- }
-
- public void setInternalName(String internalName) {
- this.internalName = internalName;
- }
-
- public String getOriginalFilename() {
- return originalFilename;
- }
-
- public void setOriginalFilename(String originalFilename) {
- this.originalFilename = originalFilename;
- }
-
- public String getProductName() {
- return productName;
- }
-
- public void setProductName(String productName) {
- this.productName = productName;
- }
-
- public String getProductVersion() {
- return productVersion;
- }
-
- public void setProductVersion(String productVersion) {
- this.productVersion = productVersion;
- }
-
- public String getTxtFileVersion() {
- return txtFileVersion;
- }
-
- public void setTxtFileVersion(String txtFileVersion) {
- this.txtFileVersion = txtFileVersion;
- }
-
- public String getTxtProductVersion() {
- return txtProductVersion;
- }
-
- public void setTxtProductVersion(String txtProductVersion) {
- this.txtProductVersion = txtProductVersion;
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on May 21, 2005
+ */
+package net.sf.launch4j.config;
+
+import net.sf.launch4j.binding.IValidatable;
+import net.sf.launch4j.binding.Validator;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class VersionInfo implements IValidatable {
+ public static final String VERSION_PATTERN = "(\\d+\\.){3}\\d+";
+
+ private String fileVersion;
+ private String txtFileVersion;
+ private String fileDescription;
+ private String copyright;
+ private String productVersion;
+ private String txtProductVersion;
+ private String productName;
+ private String companyName;
+ private String internalName;
+ private String originalFilename;
+
+ public void checkInvariants() {
+ Validator.checkString(fileVersion, 20, VERSION_PATTERN,
+ "versionInfo.fileVersion",
+ Messages.getString("VersionInfo.file.version"));
+ Validator.checkString(txtFileVersion, 50, "versionInfo.txtFileVersion",
+ Messages.getString("VersionInfo.txt.file.version"));
+ Validator.checkString(fileDescription, 150, "versionInfo.fileDescription",
+ Messages.getString("VersionInfo.file.description"));
+ Validator.checkString(copyright, 150, "versionInfo.copyright",
+ Messages.getString("VersionInfo.copyright"));
+ Validator.checkString(productVersion, 20, VERSION_PATTERN,
+ "versionInfo.productVersion",
+ Messages.getString("VersionInfo.product.version"));
+ Validator.checkString(txtProductVersion, 50, "versionInfo.txtProductVersion",
+ Messages.getString("VersionInfo.txt.product.version"));
+ Validator.checkString(productName, 150, "versionInfo.productName",
+ Messages.getString("VersionInfo.product.name"));
+ Validator.checkOptString(companyName, 150, "versionInfo.companyName",
+ Messages.getString("VersionInfo.company.name"));
+ Validator.checkString(internalName, 50, "versionInfo.internalName",
+ Messages.getString("VersionInfo.internal.name"));
+ Validator.checkTrue(!internalName.endsWith(".exe"), "versionInfo.internalName",
+ Messages.getString("VersionInfo.internal.name.not.exe"));
+ Validator.checkString(originalFilename, 50, "versionInfo.originalFilename",
+ Messages.getString("VersionInfo.original.filename"));
+ Validator.checkTrue(originalFilename.endsWith(".exe"),
+ "versionInfo.originalFilename",
+ Messages.getString("VersionInfo.original.filename.exe"));
+ }
+
+ public String getCompanyName() {
+ return companyName;
+ }
+
+ public void setCompanyName(String companyName) {
+ this.companyName = companyName;
+ }
+
+ public String getCopyright() {
+ return copyright;
+ }
+
+ public void setCopyright(String copyright) {
+ this.copyright = copyright;
+ }
+
+ public String getFileDescription() {
+ return fileDescription;
+ }
+
+ public void setFileDescription(String fileDescription) {
+ this.fileDescription = fileDescription;
+ }
+
+ public String getFileVersion() {
+ return fileVersion;
+ }
+
+ public void setFileVersion(String fileVersion) {
+ this.fileVersion = fileVersion;
+ }
+
+ public String getInternalName() {
+ return internalName;
+ }
+
+ public void setInternalName(String internalName) {
+ this.internalName = internalName;
+ }
+
+ public String getOriginalFilename() {
+ return originalFilename;
+ }
+
+ public void setOriginalFilename(String originalFilename) {
+ this.originalFilename = originalFilename;
+ }
+
+ public String getProductName() {
+ return productName;
+ }
+
+ public void setProductName(String productName) {
+ this.productName = productName;
+ }
+
+ public String getProductVersion() {
+ return productVersion;
+ }
+
+ public void setProductVersion(String productVersion) {
+ this.productVersion = productVersion;
+ }
+
+ public String getTxtFileVersion() {
+ return txtFileVersion;
+ }
+
+ public void setTxtFileVersion(String txtFileVersion) {
+ this.txtFileVersion = txtFileVersion;
+ }
+
+ public String getTxtProductVersion() {
+ return txtProductVersion;
+ }
+
+ public void setTxtProductVersion(String txtProductVersion) {
+ this.txtProductVersion = txtProductVersion;
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/config/messages.properties b/build/windows/launcher/launch4j/src/net/sf/launch4j/config/messages.properties
old mode 100755
new mode 100644
index 5753663f48a..f546f55e703
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/config/messages.properties
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/config/messages.properties
@@ -1,93 +1,93 @@
-#
-# Launch4j (http://launch4j.sourceforge.net/)
-# Cross-platform Java application wrapper for creating Windows native executables.
-#
-# Copyright (c) 2004, 2007 Grzegorz Kowal
-#
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without modification,
-# are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-# this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-# this list of conditions and the following disclaimer in the documentation
-# and/or other materials provided with the distribution.
-# * Neither the name of the Launch4j nor the names of its contributors
-# may be used to endorse or promote products derived from this software without
-# specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-
-Splash.splash.file=Splash file
-Splash.splash.timeout=Splash timeout
-
-Config.specify.output.exe=Specify output file with .exe extension.
-Config.application.jar=Application jar
-Config.application.jar.path=Specify runtime path of the jar relative to the executable.
-Config.chdir.relative='chdir' must be a path relative to the executable.
-Config.chdir.path='chdir' is now a path instead of a boolean, please check the docs.
-Config.manifest=Manifest
-Config.icon=Icon
-Config.jar.arguments=Jar arguments
-Config.error.title=Error title
-Config.download.url=Download URL
-Config.support.url=Support URL
-Config.header.type=Header type
-Config.splash.not.impl.by.console.hdr=Splash screen is not implemented by console header.
-Config.variables=Environment variables
-Config.variables.err=Environment variable assignment should have the form varname=[value][%varref%]...
-Config.priority=Process priority
-
-ClassPath.mainClass=Main class
-ClassPath.or.jar=Specify runtime path of a jar or the classpath.
-ClassPath.path=Classpath
-
-VersionInfo.file.version=File version, should be 'x.x.x.x'
-VersionInfo.txt.file.version=Free form file version
-VersionInfo.file.description=File description
-VersionInfo.copyright=Copyright
-VersionInfo.product.version=Product version, should be 'x.x.x.x'
-VersionInfo.txt.product.version=Free from product version
-VersionInfo.product.name=Product name
-VersionInfo.company.name=Company name
-VersionInfo.internal.name=Internal name
-VersionInfo.internal.name.not.exe=Internal name shouldn't have the .exe extension.
-VersionInfo.original.filename=Original filename
-VersionInfo.original.filename.exe=Original filename should end with the .exe extension.
-
-Jre.min.version=Minimum JRE version should be x.x.x[_xx]
-Jre.max.version=Maximum JRE version should be x.x.x[_xx]
-Jre.specify.jre.min.version.or.path=Specify minimum JRE version and/or bundled JRE path.
-Jre.bundled.path=Bundled JRE path
-Jre.specify.min.version=Specify minimum JRE version.
-Jre.max.greater.than.min=Maximum JRE version must be greater than the minimum.\nTo use a certain JRE version, you may set the min/max range to [1.4.2 - 1.4.2_10] for example.
-Jre.initial.and.max.heap=If you change the initial heap size please also specify the maximum size.
-Jre.initial.heap=Initial heap size must be greater than 0, leave the field blank to use the JVM default.
-Jre.max.heap=Maximum heap size cannot be less than the initial size, leave the field blank to use the JVM default.
-Jre.initial.heap.percent=Initial heap %
-Jre.max.heap.percent=Maximum heap %
-Jre.jdkPreference.invalid=Unrecognised value for JDK preference, should be between 0 and 3 inclusive.
-Jre.jvm.options=JVM arguments
-Jre.jvm.options.unclosed.quotation=JVM arguments contain an unclosed quotation.
-Jre.jvm.options.variable=Invalid environment variable reference.
-
-Msg.startupErr=Startup error message
-Msg.bundledJreErr=Bundled JRE error message
-Msg.jreVersionErr=JRE version error message
-Msg.launcherErr=Launcher error message
-
-SingleInstance.mutexName=Mutex name
-SingleInstance.windowTitle=Window title
+#
+# Launch4j (http://launch4j.sourceforge.net/)
+# Cross-platform Java application wrapper for creating Windows native executables.
+#
+# Copyright (c) 2004, 2007 Grzegorz Kowal
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification,
+# are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Launch4j nor the names of its contributors
+# may be used to endorse or promote products derived from this software without
+# specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+Splash.splash.file=Splash file
+Splash.splash.timeout=Splash timeout
+
+Config.specify.output.exe=Specify output file with .exe extension.
+Config.application.jar=Application jar
+Config.application.jar.path=Specify runtime path of the jar relative to the executable.
+Config.chdir.relative='chdir' must be a path relative to the executable.
+Config.chdir.path='chdir' is now a path instead of a boolean, please check the docs.
+Config.manifest=Manifest
+Config.icon=Icon
+Config.jar.arguments=Jar arguments
+Config.error.title=Error title
+Config.download.url=Download URL
+Config.support.url=Support URL
+Config.header.type=Header type
+Config.splash.not.impl.by.console.hdr=Splash screen is not implemented by console header.
+Config.variables=Environment variables
+Config.variables.err=Environment variable assignment should have the form varname=[value][%varref%]...
+Config.priority=Process priority
+
+ClassPath.mainClass=Main class
+ClassPath.or.jar=Specify runtime path of a jar or the classpath.
+ClassPath.path=Classpath
+
+VersionInfo.file.version=File version, should be 'x.x.x.x'
+VersionInfo.txt.file.version=Free form file version
+VersionInfo.file.description=File description
+VersionInfo.copyright=Copyright
+VersionInfo.product.version=Product version, should be 'x.x.x.x'
+VersionInfo.txt.product.version=Free from product version
+VersionInfo.product.name=Product name
+VersionInfo.company.name=Company name
+VersionInfo.internal.name=Internal name
+VersionInfo.internal.name.not.exe=Internal name shouldn't have the .exe extension.
+VersionInfo.original.filename=Original filename
+VersionInfo.original.filename.exe=Original filename should end with the .exe extension.
+
+Jre.min.version=Minimum JRE version should be x.x.x[_xx]
+Jre.max.version=Maximum JRE version should be x.x.x[_xx]
+Jre.specify.jre.min.version.or.path=Specify minimum JRE version and/or bundled JRE path.
+Jre.bundled.path=Bundled JRE path
+Jre.specify.min.version=Specify minimum JRE version.
+Jre.max.greater.than.min=Maximum JRE version must be greater than the minimum.\nTo use a certain JRE version, you may set the min/max range to [1.4.2 - 1.4.2_10] for example.
+Jre.initial.and.max.heap=If you change the initial heap size please also specify the maximum size.
+Jre.initial.heap=Initial heap size must be greater than 0, leave the field blank to use the JVM default.
+Jre.max.heap=Maximum heap size cannot be less than the initial size, leave the field blank to use the JVM default.
+Jre.initial.heap.percent=Initial heap %
+Jre.max.heap.percent=Maximum heap %
+Jre.jdkPreference.invalid=Unrecognised value for JDK preference, should be between 0 and 3 inclusive.
+Jre.jvm.options=JVM arguments
+Jre.jvm.options.unclosed.quotation=JVM arguments contain an unclosed quotation.
+Jre.jvm.options.variable=Invalid environment variable reference.
+
+Msg.startupErr=Startup error message
+Msg.bundledJreErr=Bundled JRE error message
+Msg.jreVersionErr=JRE version error message
+Msg.launcherErr=Launcher error message
+
+SingleInstance.mutexName=Mutex name
+SingleInstance.windowTitle=Window title
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/config/messages_es.properties b/build/windows/launcher/launch4j/src/net/sf/launch4j/config/messages_es.properties
old mode 100755
new mode 100644
index 5e8659b1fea..b17ff2b4e1e
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/config/messages_es.properties
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/config/messages_es.properties
@@ -1,75 +1,75 @@
-#
-# Launch4j (http://launch4j.sourceforge.net/)
-# Cross-platform Java application wrapper for creating Windows native executables.
-#
-# Copyright (c) 2004, 2007 Grzegorz Kowal, Patricio Mart�nez Ros
-#
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without modification,
-# are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-# this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-# this list of conditions and the following disclaimer in the documentation
-# and/or other materials provided with the distribution.
-# * Neither the name of the Launch4j nor the names of its contributors
-# may be used to endorse or promote products derived from this software without
-# specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-
-Splash.splash.file = Fichero de la pantalla de bienvenida
-Splash.splash.timeout = Tiempo de espera de la pantalla de bienvenida
-
-Config.specify.output.exe = Especifique el fichero de salida con extensi\u00F3n .exe.
-Config.application.jar = Aplicaci\u00F3n jar
-Config.application.jar.path = Especifique la ruta del jar relativa al ejecutable.
-Config.chdir.relative = 'Cambiar al directorio' debe ser una ruta relativa al ejecutable.
-Config.chdir.path = 'Cambiar al directorio' ahora es una ruta en lugar de un booleano, por favor consulte la documentaci\u00F3n.
-Config.icon = Icono
-Config.jar.arguments = Argumentos del jar
-Config.error.title = T\u00EDtulo de error
-Config.header.type = Tipo de cabecera
-Config.splash.not.impl.by.console.hdr = La pantalla de bienvenida no est\u00E1 implementada para la cabecera de tipo consola.
-
-VersionInfo.file.version = La versi\u00F3n del fichero, deber\u00EDa ser 'x.x.x.x'
-VersionInfo.txt.file.version = Forma libre de versi\u00F3n del fichero
-VersionInfo.file.description = Descripci\u00F3n del fichero
-VersionInfo.copyright = Copyright
-VersionInfo.product.version = Versi\u00F3n del producto, deber\u00EDa ser 'x.x.x.x'
-VersionInfo.txt.product.version = Forma libre de versi\u00F3n del producto
-VersionInfo.product.name = Nombre del producto
-VersionInfo.company.name = Nombre de la organizaci\u00F3n
-VersionInfo.internal.name = Nombre interno
-VersionInfo.internal.name.not.exe = El nombre interno no deber\u00EDa tener extensi\u00F3n .exe.
-VersionInfo.original.filename = Nombre original del fichero
-VersionInfo.original.filename.exe = El nombre original del fichero debe acabar con extensi\u00F3n .exe.
-Jre.min.version = La versi\u00F3n m\u00EDnima del JRE deber\u00EDa ser x.x.x[_xx]
-Jre.max.version = La versi\u00F3n m\u00E1xima del JRE deber\u00EDa ser x.x.x[_xx]
-Jre.specify.jre.min.version.or.path=Specify minimum JRE version and/or bundled JRE path.
-Jre.bundled.path.rel = La ruta del JRE debe ser relativa al ejecutable.
-Jre.specify.min.version = Especifique la versi\u00F3n m\u00EDnima del JRE.
-Jre.max.greater.than.min = La versi\u00F3n m\u00E1xima del JRE debe ser mayor que la m\u00EDnima.\nPara usar cierta versi\u00F3n del JRE, puede esyablecer el rango m\u00EDnimo/m\u00E1ximo a [1.4.2 - 1.4.2_10], por ejemplo.
-Jre.jvm.options = Argumentos de la JVM
-
-Msg.startupErr=Startup error message
-Msg.bundledJreErr=Bundled JRE error message
-Msg.jreVersionErr=JRE version error message
-Msg.launcherErr=Launcher error message
-
-SingleInstance.mutexName=Mutex name
-SingleInstance.windowTitle=Window title
-
+#
+# Launch4j (http://launch4j.sourceforge.net/)
+# Cross-platform Java application wrapper for creating Windows native executables.
+#
+# Copyright (c) 2004, 2007 Grzegorz Kowal, Patricio Mart�nez Ros
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification,
+# are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Launch4j nor the names of its contributors
+# may be used to endorse or promote products derived from this software without
+# specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+Splash.splash.file = Fichero de la pantalla de bienvenida
+Splash.splash.timeout = Tiempo de espera de la pantalla de bienvenida
+
+Config.specify.output.exe = Especifique el fichero de salida con extensi\u00F3n .exe.
+Config.application.jar = Aplicaci\u00F3n jar
+Config.application.jar.path = Especifique la ruta del jar relativa al ejecutable.
+Config.chdir.relative = 'Cambiar al directorio' debe ser una ruta relativa al ejecutable.
+Config.chdir.path = 'Cambiar al directorio' ahora es una ruta en lugar de un booleano, por favor consulte la documentaci\u00F3n.
+Config.icon = Icono
+Config.jar.arguments = Argumentos del jar
+Config.error.title = T\u00EDtulo de error
+Config.header.type = Tipo de cabecera
+Config.splash.not.impl.by.console.hdr = La pantalla de bienvenida no est\u00E1 implementada para la cabecera de tipo consola.
+
+VersionInfo.file.version = La versi\u00F3n del fichero, deber\u00EDa ser 'x.x.x.x'
+VersionInfo.txt.file.version = Forma libre de versi\u00F3n del fichero
+VersionInfo.file.description = Descripci\u00F3n del fichero
+VersionInfo.copyright = Copyright
+VersionInfo.product.version = Versi\u00F3n del producto, deber\u00EDa ser 'x.x.x.x'
+VersionInfo.txt.product.version = Forma libre de versi\u00F3n del producto
+VersionInfo.product.name = Nombre del producto
+VersionInfo.company.name = Nombre de la organizaci\u00F3n
+VersionInfo.internal.name = Nombre interno
+VersionInfo.internal.name.not.exe = El nombre interno no deber\u00EDa tener extensi\u00F3n .exe.
+VersionInfo.original.filename = Nombre original del fichero
+VersionInfo.original.filename.exe = El nombre original del fichero debe acabar con extensi\u00F3n .exe.
+Jre.min.version = La versi\u00F3n m\u00EDnima del JRE deber\u00EDa ser x.x.x[_xx]
+Jre.max.version = La versi\u00F3n m\u00E1xima del JRE deber\u00EDa ser x.x.x[_xx]
+Jre.specify.jre.min.version.or.path=Specify minimum JRE version and/or bundled JRE path.
+Jre.bundled.path.rel = La ruta del JRE debe ser relativa al ejecutable.
+Jre.specify.min.version = Especifique la versi\u00F3n m\u00EDnima del JRE.
+Jre.max.greater.than.min = La versi\u00F3n m\u00E1xima del JRE debe ser mayor que la m\u00EDnima.\nPara usar cierta versi\u00F3n del JRE, puede esyablecer el rango m\u00EDnimo/m\u00E1ximo a [1.4.2 - 1.4.2_10], por ejemplo.
+Jre.jvm.options = Argumentos de la JVM
+
+Msg.startupErr=Startup error message
+Msg.bundledJreErr=Bundled JRE error message
+Msg.jreVersionErr=JRE version error message
+Msg.launcherErr=Launcher error message
+
+SingleInstance.mutexName=Mutex name
+SingleInstance.windowTitle=Window title
+
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/form/BasicForm.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/form/BasicForm.java
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/form/ClassPathForm.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/form/ClassPathForm.java
old mode 100755
new mode 100644
index 9f4f5247114..f19d08e1c34
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/form/ClassPathForm.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/form/ClassPathForm.java
@@ -1,193 +1,193 @@
-package net.sf.launch4j.form;
-
-import com.jgoodies.forms.layout.CellConstraints;
-import com.jgoodies.forms.layout.FormLayout;
-import java.awt.BorderLayout;
-import java.awt.Container;
-import java.awt.Dimension;
-import javax.swing.Box;
-import javax.swing.ImageIcon;
-import javax.swing.JButton;
-import javax.swing.JCheckBox;
-import javax.swing.JLabel;
-import javax.swing.JList;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTextField;
-
-public abstract class ClassPathForm extends JPanel
-{
- protected final JTextField _classpathField = new JTextField();
- protected final JLabel _classpathFieldLabel = new JLabel();
- protected final JLabel _classpathListLabel = new JLabel();
- protected final JList _classpathList = new JList();
- protected final JLabel _mainclassLabel = new JLabel();
- protected final JTextField _mainclassField = new JTextField();
- protected final JButton _acceptClasspathButton = new JButton();
- protected final JButton _removeClasspathButton = new JButton();
- protected final JButton _importClasspathButton = new JButton();
- protected final JButton _classpathUpButton = new JButton();
- protected final JButton _classpathDownButton = new JButton();
- protected final JCheckBox _classpathCheck = new JCheckBox();
- protected final JButton _newClasspathButton = new JButton();
-
- /**
- * Default constructor
- */
- public ClassPathForm()
- {
- initializePanel();
- }
-
- /**
- * Adds fill components to empty cells in the first row and first column of the grid.
- * This ensures that the grid spacing will be the same as shown in the designer.
- * @param cols an array of column indices in the first row where fill components should be added.
- * @param rows an array of row indices in the first column where fill components should be added.
- */
- void addFillComponents( Container panel, int[] cols, int[] rows )
- {
- Dimension filler = new Dimension(10,10);
-
- boolean filled_cell_11 = false;
- CellConstraints cc = new CellConstraints();
- if ( cols.length > 0 && rows.length > 0 )
- {
- if ( cols[0] == 1 && rows[0] == 1 )
- {
- /** add a rigid area */
- panel.add( Box.createRigidArea( filler ), cc.xy(1,1) );
- filled_cell_11 = true;
- }
- }
-
- for( int index = 0; index < cols.length; index++ )
- {
- if ( cols[index] == 1 && filled_cell_11 )
- {
- continue;
- }
- panel.add( Box.createRigidArea( filler ), cc.xy(cols[index],1) );
- }
-
- for( int index = 0; index < rows.length; index++ )
- {
- if ( rows[index] == 1 && filled_cell_11 )
- {
- continue;
- }
- panel.add( Box.createRigidArea( filler ), cc.xy(1,rows[index]) );
- }
-
- }
-
- /**
- * Helper method to load an image file from the CLASSPATH
- * @param imageName the package and name of the file to load relative to the CLASSPATH
- * @return an ImageIcon instance with the specified image file
- * @throws IllegalArgumentException if the image resource cannot be loaded.
- */
- public ImageIcon loadImage( String imageName )
- {
- try
- {
- ClassLoader classloader = getClass().getClassLoader();
- java.net.URL url = classloader.getResource( imageName );
- if ( url != null )
- {
- ImageIcon icon = new ImageIcon( url );
- return icon;
- }
- }
- catch( Exception e )
- {
- e.printStackTrace();
- }
- throw new IllegalArgumentException( "Unable to load image: " + imageName );
- }
-
- public JPanel createPanel()
- {
- JPanel jpanel1 = new JPanel();
- FormLayout formlayout1 = new FormLayout("FILL:7DLU:NONE,RIGHT:MAX(65DLU;DEFAULT):NONE,FILL:3DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:3DLU:NONE,FILL:DEFAULT:NONE,FILL:3DLU:NONE,FILL:DEFAULT:NONE,FILL:3DLU:NONE,FILL:DEFAULT:NONE,FILL:3DLU:NONE,FILL:26PX:NONE,FILL:7DLU:NONE","CENTER:9DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:GROW(1.0),CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:9DLU:NONE");
- CellConstraints cc = new CellConstraints();
- jpanel1.setLayout(formlayout1);
-
- _classpathField.setName("classpathField");
- jpanel1.add(_classpathField,cc.xywh(4,11,7,1));
-
- _classpathFieldLabel.setIcon(loadImage("images/asterix.gif"));
- _classpathFieldLabel.setName("classpathFieldLabel");
- _classpathFieldLabel.setText(Messages.getString("editClassPath"));
- jpanel1.add(_classpathFieldLabel,cc.xy(2,11));
-
- _classpathListLabel.setName("classpathListLabel");
- _classpathListLabel.setText(Messages.getString("classPath"));
- jpanel1.add(_classpathListLabel,cc.xy(2,6));
-
- _classpathList.setName("classpathList");
- JScrollPane jscrollpane1 = new JScrollPane();
- jscrollpane1.setViewportView(_classpathList);
- jscrollpane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
- jscrollpane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
- jpanel1.add(jscrollpane1,cc.xywh(4,6,7,4));
-
- _mainclassLabel.setIcon(loadImage("images/asterix.gif"));
- _mainclassLabel.setName("mainclassLabel");
- _mainclassLabel.setText(Messages.getString("mainClass"));
- jpanel1.add(_mainclassLabel,cc.xy(2,4));
-
- _mainclassField.setName("mainclassField");
- jpanel1.add(_mainclassField,cc.xywh(4,4,7,1));
-
- _acceptClasspathButton.setActionCommand("Add");
- _acceptClasspathButton.setIcon(loadImage("images/ok16.png"));
- _acceptClasspathButton.setName("acceptClasspathButton");
- _acceptClasspathButton.setText(Messages.getString("accept"));
- jpanel1.add(_acceptClasspathButton,cc.xy(8,13));
-
- _removeClasspathButton.setActionCommand("Remove");
- _removeClasspathButton.setIcon(loadImage("images/cancel16.png"));
- _removeClasspathButton.setName("removeClasspathButton");
- _removeClasspathButton.setText(Messages.getString("remove"));
- jpanel1.add(_removeClasspathButton,cc.xy(10,13));
-
- _importClasspathButton.setIcon(loadImage("images/open16.png"));
- _importClasspathButton.setName("importClasspathButton");
- _importClasspathButton.setToolTipText(Messages.getString("importClassPath"));
- jpanel1.add(_importClasspathButton,cc.xy(12,4));
-
- _classpathUpButton.setIcon(loadImage("images/up16.png"));
- _classpathUpButton.setName("classpathUpButton");
- jpanel1.add(_classpathUpButton,cc.xy(12,6));
-
- _classpathDownButton.setIcon(loadImage("images/down16.png"));
- _classpathDownButton.setName("classpathDownButton");
- jpanel1.add(_classpathDownButton,cc.xy(12,8));
-
- _classpathCheck.setActionCommand("Custom classpath");
- _classpathCheck.setName("classpathCheck");
- _classpathCheck.setText(Messages.getString("customClassPath"));
- jpanel1.add(_classpathCheck,cc.xy(4,2));
-
- _newClasspathButton.setActionCommand("New");
- _newClasspathButton.setIcon(loadImage("images/new16.png"));
- _newClasspathButton.setName("newClasspathButton");
- _newClasspathButton.setText(Messages.getString("new"));
- jpanel1.add(_newClasspathButton,cc.xy(6,13));
-
- addFillComponents(jpanel1,new int[]{ 1,2,3,4,5,6,7,8,9,10,11,12,13 },new int[]{ 1,2,3,4,5,6,7,8,9,10,11,12,13,14 });
- return jpanel1;
- }
-
- /**
- * Initializer
- */
- protected void initializePanel()
- {
- setLayout(new BorderLayout());
- add(createPanel(), BorderLayout.CENTER);
- }
-
-
-}
+package net.sf.launch4j.form;
+
+import com.jgoodies.forms.layout.CellConstraints;
+import com.jgoodies.forms.layout.FormLayout;
+import java.awt.BorderLayout;
+import java.awt.Container;
+import java.awt.Dimension;
+import javax.swing.Box;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextField;
+
+public abstract class ClassPathForm extends JPanel
+{
+ protected final JTextField _classpathField = new JTextField();
+ protected final JLabel _classpathFieldLabel = new JLabel();
+ protected final JLabel _classpathListLabel = new JLabel();
+ protected final JList _classpathList = new JList();
+ protected final JLabel _mainclassLabel = new JLabel();
+ protected final JTextField _mainclassField = new JTextField();
+ protected final JButton _acceptClasspathButton = new JButton();
+ protected final JButton _removeClasspathButton = new JButton();
+ protected final JButton _importClasspathButton = new JButton();
+ protected final JButton _classpathUpButton = new JButton();
+ protected final JButton _classpathDownButton = new JButton();
+ protected final JCheckBox _classpathCheck = new JCheckBox();
+ protected final JButton _newClasspathButton = new JButton();
+
+ /**
+ * Default constructor
+ */
+ public ClassPathForm()
+ {
+ initializePanel();
+ }
+
+ /**
+ * Adds fill components to empty cells in the first row and first column of the grid.
+ * This ensures that the grid spacing will be the same as shown in the designer.
+ * @param cols an array of column indices in the first row where fill components should be added.
+ * @param rows an array of row indices in the first column where fill components should be added.
+ */
+ void addFillComponents( Container panel, int[] cols, int[] rows )
+ {
+ Dimension filler = new Dimension(10,10);
+
+ boolean filled_cell_11 = false;
+ CellConstraints cc = new CellConstraints();
+ if ( cols.length > 0 && rows.length > 0 )
+ {
+ if ( cols[0] == 1 && rows[0] == 1 )
+ {
+ /** add a rigid area */
+ panel.add( Box.createRigidArea( filler ), cc.xy(1,1) );
+ filled_cell_11 = true;
+ }
+ }
+
+ for( int index = 0; index < cols.length; index++ )
+ {
+ if ( cols[index] == 1 && filled_cell_11 )
+ {
+ continue;
+ }
+ panel.add( Box.createRigidArea( filler ), cc.xy(cols[index],1) );
+ }
+
+ for( int index = 0; index < rows.length; index++ )
+ {
+ if ( rows[index] == 1 && filled_cell_11 )
+ {
+ continue;
+ }
+ panel.add( Box.createRigidArea( filler ), cc.xy(1,rows[index]) );
+ }
+
+ }
+
+ /**
+ * Helper method to load an image file from the CLASSPATH
+ * @param imageName the package and name of the file to load relative to the CLASSPATH
+ * @return an ImageIcon instance with the specified image file
+ * @throws IllegalArgumentException if the image resource cannot be loaded.
+ */
+ public ImageIcon loadImage( String imageName )
+ {
+ try
+ {
+ ClassLoader classloader = getClass().getClassLoader();
+ java.net.URL url = classloader.getResource( imageName );
+ if ( url != null )
+ {
+ ImageIcon icon = new ImageIcon( url );
+ return icon;
+ }
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+ throw new IllegalArgumentException( "Unable to load image: " + imageName );
+ }
+
+ public JPanel createPanel()
+ {
+ JPanel jpanel1 = new JPanel();
+ FormLayout formlayout1 = new FormLayout("FILL:7DLU:NONE,RIGHT:MAX(65DLU;DEFAULT):NONE,FILL:3DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:3DLU:NONE,FILL:DEFAULT:NONE,FILL:3DLU:NONE,FILL:DEFAULT:NONE,FILL:3DLU:NONE,FILL:DEFAULT:NONE,FILL:3DLU:NONE,FILL:26PX:NONE,FILL:7DLU:NONE","CENTER:9DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:GROW(1.0),CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:9DLU:NONE");
+ CellConstraints cc = new CellConstraints();
+ jpanel1.setLayout(formlayout1);
+
+ _classpathField.setName("classpathField");
+ jpanel1.add(_classpathField,cc.xywh(4,11,7,1));
+
+ _classpathFieldLabel.setIcon(loadImage("images/asterix.gif"));
+ _classpathFieldLabel.setName("classpathFieldLabel");
+ _classpathFieldLabel.setText(Messages.getString("editClassPath"));
+ jpanel1.add(_classpathFieldLabel,cc.xy(2,11));
+
+ _classpathListLabel.setName("classpathListLabel");
+ _classpathListLabel.setText(Messages.getString("classPath"));
+ jpanel1.add(_classpathListLabel,cc.xy(2,6));
+
+ _classpathList.setName("classpathList");
+ JScrollPane jscrollpane1 = new JScrollPane();
+ jscrollpane1.setViewportView(_classpathList);
+ jscrollpane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+ jscrollpane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+ jpanel1.add(jscrollpane1,cc.xywh(4,6,7,4));
+
+ _mainclassLabel.setIcon(loadImage("images/asterix.gif"));
+ _mainclassLabel.setName("mainclassLabel");
+ _mainclassLabel.setText(Messages.getString("mainClass"));
+ jpanel1.add(_mainclassLabel,cc.xy(2,4));
+
+ _mainclassField.setName("mainclassField");
+ jpanel1.add(_mainclassField,cc.xywh(4,4,7,1));
+
+ _acceptClasspathButton.setActionCommand("Add");
+ _acceptClasspathButton.setIcon(loadImage("images/ok16.png"));
+ _acceptClasspathButton.setName("acceptClasspathButton");
+ _acceptClasspathButton.setText(Messages.getString("accept"));
+ jpanel1.add(_acceptClasspathButton,cc.xy(8,13));
+
+ _removeClasspathButton.setActionCommand("Remove");
+ _removeClasspathButton.setIcon(loadImage("images/cancel16.png"));
+ _removeClasspathButton.setName("removeClasspathButton");
+ _removeClasspathButton.setText(Messages.getString("remove"));
+ jpanel1.add(_removeClasspathButton,cc.xy(10,13));
+
+ _importClasspathButton.setIcon(loadImage("images/open16.png"));
+ _importClasspathButton.setName("importClasspathButton");
+ _importClasspathButton.setToolTipText(Messages.getString("importClassPath"));
+ jpanel1.add(_importClasspathButton,cc.xy(12,4));
+
+ _classpathUpButton.setIcon(loadImage("images/up16.png"));
+ _classpathUpButton.setName("classpathUpButton");
+ jpanel1.add(_classpathUpButton,cc.xy(12,6));
+
+ _classpathDownButton.setIcon(loadImage("images/down16.png"));
+ _classpathDownButton.setName("classpathDownButton");
+ jpanel1.add(_classpathDownButton,cc.xy(12,8));
+
+ _classpathCheck.setActionCommand("Custom classpath");
+ _classpathCheck.setName("classpathCheck");
+ _classpathCheck.setText(Messages.getString("customClassPath"));
+ jpanel1.add(_classpathCheck,cc.xy(4,2));
+
+ _newClasspathButton.setActionCommand("New");
+ _newClasspathButton.setIcon(loadImage("images/new16.png"));
+ _newClasspathButton.setName("newClasspathButton");
+ _newClasspathButton.setText(Messages.getString("new"));
+ jpanel1.add(_newClasspathButton,cc.xy(6,13));
+
+ addFillComponents(jpanel1,new int[]{ 1,2,3,4,5,6,7,8,9,10,11,12,13 },new int[]{ 1,2,3,4,5,6,7,8,9,10,11,12,13,14 });
+ return jpanel1;
+ }
+
+ /**
+ * Initializer
+ */
+ protected void initializePanel()
+ {
+ setLayout(new BorderLayout());
+ add(createPanel(), BorderLayout.CENTER);
+ }
+
+
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/form/ConfigForm.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/form/ConfigForm.java
old mode 100755
new mode 100644
index b3c6fffed31..dcb6c8535cb
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/form/ConfigForm.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/form/ConfigForm.java
@@ -1,132 +1,132 @@
-package net.sf.launch4j.form;
-
-import com.jeta.forms.components.separator.TitledSeparator;
-import com.jgoodies.forms.layout.CellConstraints;
-import com.jgoodies.forms.layout.FormLayout;
-import java.awt.BorderLayout;
-import java.awt.Container;
-import java.awt.Dimension;
-import javax.swing.Box;
-import javax.swing.ImageIcon;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTabbedPane;
-import javax.swing.JTextArea;
-
-public abstract class ConfigForm extends JPanel
-{
- protected final JTextArea _logTextArea = new JTextArea();
- protected final TitledSeparator _logSeparator = new TitledSeparator();
- protected final JTabbedPane _tab = new JTabbedPane();
-
- /**
- * Default constructor
- */
- public ConfigForm()
- {
- initializePanel();
- }
-
- /**
- * Adds fill components to empty cells in the first row and first column of the grid.
- * This ensures that the grid spacing will be the same as shown in the designer.
- * @param cols an array of column indices in the first row where fill components should be added.
- * @param rows an array of row indices in the first column where fill components should be added.
- */
- void addFillComponents( Container panel, int[] cols, int[] rows )
- {
- Dimension filler = new Dimension(10,10);
-
- boolean filled_cell_11 = false;
- CellConstraints cc = new CellConstraints();
- if ( cols.length > 0 && rows.length > 0 )
- {
- if ( cols[0] == 1 && rows[0] == 1 )
- {
- /** add a rigid area */
- panel.add( Box.createRigidArea( filler ), cc.xy(1,1) );
- filled_cell_11 = true;
- }
- }
-
- for( int index = 0; index < cols.length; index++ )
- {
- if ( cols[index] == 1 && filled_cell_11 )
- {
- continue;
- }
- panel.add( Box.createRigidArea( filler ), cc.xy(cols[index],1) );
- }
-
- for( int index = 0; index < rows.length; index++ )
- {
- if ( rows[index] == 1 && filled_cell_11 )
- {
- continue;
- }
- panel.add( Box.createRigidArea( filler ), cc.xy(1,rows[index]) );
- }
-
- }
-
- /**
- * Helper method to load an image file from the CLASSPATH
- * @param imageName the package and name of the file to load relative to the CLASSPATH
- * @return an ImageIcon instance with the specified image file
- * @throws IllegalArgumentException if the image resource cannot be loaded.
- */
- public ImageIcon loadImage( String imageName )
- {
- try
- {
- ClassLoader classloader = getClass().getClassLoader();
- java.net.URL url = classloader.getResource( imageName );
- if ( url != null )
- {
- ImageIcon icon = new ImageIcon( url );
- return icon;
- }
- }
- catch( Exception e )
- {
- e.printStackTrace();
- }
- throw new IllegalArgumentException( "Unable to load image: " + imageName );
- }
-
- public JPanel createPanel()
- {
- JPanel jpanel1 = new JPanel();
- FormLayout formlayout1 = new FormLayout("FILL:7DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:7DLU:NONE","CENTER:3DLU:NONE,FILL:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:9DLU:NONE");
- CellConstraints cc = new CellConstraints();
- jpanel1.setLayout(formlayout1);
-
- _logTextArea.setName("logTextArea");
- JScrollPane jscrollpane1 = new JScrollPane();
- jscrollpane1.setViewportView(_logTextArea);
- jscrollpane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
- jscrollpane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
- jpanel1.add(jscrollpane1,cc.xy(2,6));
-
- _logSeparator.setName("logSeparator");
- _logSeparator.setText(Messages.getString("log"));
- jpanel1.add(_logSeparator,cc.xy(2,4));
-
- _tab.setName("tab");
- jpanel1.add(_tab,cc.xywh(1,2,3,1));
-
- addFillComponents(jpanel1,new int[]{ 1,2,3 },new int[]{ 1,3,4,5,6,7 });
- return jpanel1;
- }
-
- /**
- * Initializer
- */
- protected void initializePanel()
- {
- setLayout(new BorderLayout());
- add(createPanel(), BorderLayout.CENTER);
- }
-
-
-}
+package net.sf.launch4j.form;
+
+import com.jeta.forms.components.separator.TitledSeparator;
+import com.jgoodies.forms.layout.CellConstraints;
+import com.jgoodies.forms.layout.FormLayout;
+import java.awt.BorderLayout;
+import java.awt.Container;
+import java.awt.Dimension;
+import javax.swing.Box;
+import javax.swing.ImageIcon;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTabbedPane;
+import javax.swing.JTextArea;
+
+public abstract class ConfigForm extends JPanel
+{
+ protected final JTextArea _logTextArea = new JTextArea();
+ protected final TitledSeparator _logSeparator = new TitledSeparator();
+ protected final JTabbedPane _tab = new JTabbedPane();
+
+ /**
+ * Default constructor
+ */
+ public ConfigForm()
+ {
+ initializePanel();
+ }
+
+ /**
+ * Adds fill components to empty cells in the first row and first column of the grid.
+ * This ensures that the grid spacing will be the same as shown in the designer.
+ * @param cols an array of column indices in the first row where fill components should be added.
+ * @param rows an array of row indices in the first column where fill components should be added.
+ */
+ void addFillComponents( Container panel, int[] cols, int[] rows )
+ {
+ Dimension filler = new Dimension(10,10);
+
+ boolean filled_cell_11 = false;
+ CellConstraints cc = new CellConstraints();
+ if ( cols.length > 0 && rows.length > 0 )
+ {
+ if ( cols[0] == 1 && rows[0] == 1 )
+ {
+ /** add a rigid area */
+ panel.add( Box.createRigidArea( filler ), cc.xy(1,1) );
+ filled_cell_11 = true;
+ }
+ }
+
+ for( int index = 0; index < cols.length; index++ )
+ {
+ if ( cols[index] == 1 && filled_cell_11 )
+ {
+ continue;
+ }
+ panel.add( Box.createRigidArea( filler ), cc.xy(cols[index],1) );
+ }
+
+ for( int index = 0; index < rows.length; index++ )
+ {
+ if ( rows[index] == 1 && filled_cell_11 )
+ {
+ continue;
+ }
+ panel.add( Box.createRigidArea( filler ), cc.xy(1,rows[index]) );
+ }
+
+ }
+
+ /**
+ * Helper method to load an image file from the CLASSPATH
+ * @param imageName the package and name of the file to load relative to the CLASSPATH
+ * @return an ImageIcon instance with the specified image file
+ * @throws IllegalArgumentException if the image resource cannot be loaded.
+ */
+ public ImageIcon loadImage( String imageName )
+ {
+ try
+ {
+ ClassLoader classloader = getClass().getClassLoader();
+ java.net.URL url = classloader.getResource( imageName );
+ if ( url != null )
+ {
+ ImageIcon icon = new ImageIcon( url );
+ return icon;
+ }
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+ throw new IllegalArgumentException( "Unable to load image: " + imageName );
+ }
+
+ public JPanel createPanel()
+ {
+ JPanel jpanel1 = new JPanel();
+ FormLayout formlayout1 = new FormLayout("FILL:7DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:7DLU:NONE","CENTER:3DLU:NONE,FILL:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:9DLU:NONE");
+ CellConstraints cc = new CellConstraints();
+ jpanel1.setLayout(formlayout1);
+
+ _logTextArea.setName("logTextArea");
+ JScrollPane jscrollpane1 = new JScrollPane();
+ jscrollpane1.setViewportView(_logTextArea);
+ jscrollpane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+ jscrollpane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+ jpanel1.add(jscrollpane1,cc.xy(2,6));
+
+ _logSeparator.setName("logSeparator");
+ _logSeparator.setText(Messages.getString("log"));
+ jpanel1.add(_logSeparator,cc.xy(2,4));
+
+ _tab.setName("tab");
+ jpanel1.add(_tab,cc.xywh(1,2,3,1));
+
+ addFillComponents(jpanel1,new int[]{ 1,2,3 },new int[]{ 1,3,4,5,6,7 });
+ return jpanel1;
+ }
+
+ /**
+ * Initializer
+ */
+ protected void initializePanel()
+ {
+ setLayout(new BorderLayout());
+ add(createPanel(), BorderLayout.CENTER);
+ }
+
+
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/form/EnvironmentVarsForm.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/form/EnvironmentVarsForm.java
old mode 100755
new mode 100644
index f2b79e6e791..17e99fbf4a0
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/form/EnvironmentVarsForm.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/form/EnvironmentVarsForm.java
@@ -1,127 +1,127 @@
-package net.sf.launch4j.form;
-
-import com.jgoodies.forms.layout.CellConstraints;
-import com.jgoodies.forms.layout.FormLayout;
-import java.awt.BorderLayout;
-import java.awt.Container;
-import java.awt.Dimension;
-import javax.swing.Box;
-import javax.swing.ImageIcon;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTextArea;
-
-public abstract class EnvironmentVarsForm extends JPanel
-{
- protected final JTextArea _envVarsTextArea = new JTextArea();
- protected final JLabel _envVarsLabel = new JLabel();
-
- /**
- * Default constructor
- */
- public EnvironmentVarsForm()
- {
- initializePanel();
- }
-
- /**
- * Adds fill components to empty cells in the first row and first column of the grid.
- * This ensures that the grid spacing will be the same as shown in the designer.
- * @param cols an array of column indices in the first row where fill components should be added.
- * @param rows an array of row indices in the first column where fill components should be added.
- */
- void addFillComponents( Container panel, int[] cols, int[] rows )
- {
- Dimension filler = new Dimension(10,10);
-
- boolean filled_cell_11 = false;
- CellConstraints cc = new CellConstraints();
- if ( cols.length > 0 && rows.length > 0 )
- {
- if ( cols[0] == 1 && rows[0] == 1 )
- {
- /** add a rigid area */
- panel.add( Box.createRigidArea( filler ), cc.xy(1,1) );
- filled_cell_11 = true;
- }
- }
-
- for( int index = 0; index < cols.length; index++ )
- {
- if ( cols[index] == 1 && filled_cell_11 )
- {
- continue;
- }
- panel.add( Box.createRigidArea( filler ), cc.xy(cols[index],1) );
- }
-
- for( int index = 0; index < rows.length; index++ )
- {
- if ( rows[index] == 1 && filled_cell_11 )
- {
- continue;
- }
- panel.add( Box.createRigidArea( filler ), cc.xy(1,rows[index]) );
- }
-
- }
-
- /**
- * Helper method to load an image file from the CLASSPATH
- * @param imageName the package and name of the file to load relative to the CLASSPATH
- * @return an ImageIcon instance with the specified image file
- * @throws IllegalArgumentException if the image resource cannot be loaded.
- */
- public ImageIcon loadImage( String imageName )
- {
- try
- {
- ClassLoader classloader = getClass().getClassLoader();
- java.net.URL url = classloader.getResource( imageName );
- if ( url != null )
- {
- ImageIcon icon = new ImageIcon( url );
- return icon;
- }
- }
- catch( Exception e )
- {
- e.printStackTrace();
- }
- throw new IllegalArgumentException( "Unable to load image: " + imageName );
- }
-
- public JPanel createPanel()
- {
- JPanel jpanel1 = new JPanel();
- FormLayout formlayout1 = new FormLayout("FILL:7DLU:NONE,RIGHT:MAX(65DLU;DEFAULT):NONE,FILL:3DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:7DLU:NONE","CENTER:9DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:9DLU:NONE");
- CellConstraints cc = new CellConstraints();
- jpanel1.setLayout(formlayout1);
-
- _envVarsTextArea.setName("envVarsTextArea");
- JScrollPane jscrollpane1 = new JScrollPane();
- jscrollpane1.setViewportView(_envVarsTextArea);
- jscrollpane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
- jscrollpane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
- jpanel1.add(jscrollpane1,cc.xy(4,2));
-
- _envVarsLabel.setName("envVarsLabel");
- _envVarsLabel.setText(Messages.getString("setVariables"));
- jpanel1.add(_envVarsLabel,new CellConstraints(2,2,1,1,CellConstraints.DEFAULT,CellConstraints.TOP));
-
- addFillComponents(jpanel1,new int[]{ 1,2,3,4,5 },new int[]{ 1,2,3 });
- return jpanel1;
- }
-
- /**
- * Initializer
- */
- protected void initializePanel()
- {
- setLayout(new BorderLayout());
- add(createPanel(), BorderLayout.CENTER);
- }
-
-
-}
+package net.sf.launch4j.form;
+
+import com.jgoodies.forms.layout.CellConstraints;
+import com.jgoodies.forms.layout.FormLayout;
+import java.awt.BorderLayout;
+import java.awt.Container;
+import java.awt.Dimension;
+import javax.swing.Box;
+import javax.swing.ImageIcon;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+
+public abstract class EnvironmentVarsForm extends JPanel
+{
+ protected final JTextArea _envVarsTextArea = new JTextArea();
+ protected final JLabel _envVarsLabel = new JLabel();
+
+ /**
+ * Default constructor
+ */
+ public EnvironmentVarsForm()
+ {
+ initializePanel();
+ }
+
+ /**
+ * Adds fill components to empty cells in the first row and first column of the grid.
+ * This ensures that the grid spacing will be the same as shown in the designer.
+ * @param cols an array of column indices in the first row where fill components should be added.
+ * @param rows an array of row indices in the first column where fill components should be added.
+ */
+ void addFillComponents( Container panel, int[] cols, int[] rows )
+ {
+ Dimension filler = new Dimension(10,10);
+
+ boolean filled_cell_11 = false;
+ CellConstraints cc = new CellConstraints();
+ if ( cols.length > 0 && rows.length > 0 )
+ {
+ if ( cols[0] == 1 && rows[0] == 1 )
+ {
+ /** add a rigid area */
+ panel.add( Box.createRigidArea( filler ), cc.xy(1,1) );
+ filled_cell_11 = true;
+ }
+ }
+
+ for( int index = 0; index < cols.length; index++ )
+ {
+ if ( cols[index] == 1 && filled_cell_11 )
+ {
+ continue;
+ }
+ panel.add( Box.createRigidArea( filler ), cc.xy(cols[index],1) );
+ }
+
+ for( int index = 0; index < rows.length; index++ )
+ {
+ if ( rows[index] == 1 && filled_cell_11 )
+ {
+ continue;
+ }
+ panel.add( Box.createRigidArea( filler ), cc.xy(1,rows[index]) );
+ }
+
+ }
+
+ /**
+ * Helper method to load an image file from the CLASSPATH
+ * @param imageName the package and name of the file to load relative to the CLASSPATH
+ * @return an ImageIcon instance with the specified image file
+ * @throws IllegalArgumentException if the image resource cannot be loaded.
+ */
+ public ImageIcon loadImage( String imageName )
+ {
+ try
+ {
+ ClassLoader classloader = getClass().getClassLoader();
+ java.net.URL url = classloader.getResource( imageName );
+ if ( url != null )
+ {
+ ImageIcon icon = new ImageIcon( url );
+ return icon;
+ }
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+ throw new IllegalArgumentException( "Unable to load image: " + imageName );
+ }
+
+ public JPanel createPanel()
+ {
+ JPanel jpanel1 = new JPanel();
+ FormLayout formlayout1 = new FormLayout("FILL:7DLU:NONE,RIGHT:MAX(65DLU;DEFAULT):NONE,FILL:3DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:7DLU:NONE","CENTER:9DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:9DLU:NONE");
+ CellConstraints cc = new CellConstraints();
+ jpanel1.setLayout(formlayout1);
+
+ _envVarsTextArea.setName("envVarsTextArea");
+ JScrollPane jscrollpane1 = new JScrollPane();
+ jscrollpane1.setViewportView(_envVarsTextArea);
+ jscrollpane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+ jscrollpane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+ jpanel1.add(jscrollpane1,cc.xy(4,2));
+
+ _envVarsLabel.setName("envVarsLabel");
+ _envVarsLabel.setText(Messages.getString("setVariables"));
+ jpanel1.add(_envVarsLabel,new CellConstraints(2,2,1,1,CellConstraints.DEFAULT,CellConstraints.TOP));
+
+ addFillComponents(jpanel1,new int[]{ 1,2,3,4,5 },new int[]{ 1,2,3 });
+ return jpanel1;
+ }
+
+ /**
+ * Initializer
+ */
+ protected void initializePanel()
+ {
+ setLayout(new BorderLayout());
+ add(createPanel(), BorderLayout.CENTER);
+ }
+
+
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/form/HeaderForm.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/form/HeaderForm.java
old mode 100755
new mode 100644
index 91c40024ab9..ef5dac41533
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/form/HeaderForm.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/form/HeaderForm.java
@@ -1,171 +1,171 @@
-package net.sf.launch4j.form;
-
-import com.jeta.forms.components.separator.TitledSeparator;
-import com.jgoodies.forms.layout.CellConstraints;
-import com.jgoodies.forms.layout.FormLayout;
-import java.awt.BorderLayout;
-import java.awt.Container;
-import java.awt.Dimension;
-import javax.swing.Box;
-import javax.swing.ButtonGroup;
-import javax.swing.ImageIcon;
-import javax.swing.JCheckBox;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JRadioButton;
-import javax.swing.JScrollPane;
-import javax.swing.JTextArea;
-
-public abstract class HeaderForm extends JPanel
-{
- protected final JLabel _headerTypeLabel = new JLabel();
- protected final JRadioButton _guiHeaderRadio = new JRadioButton();
- protected final ButtonGroup _headerButtonGroup = new ButtonGroup();
- protected final JRadioButton _consoleHeaderRadio = new JRadioButton();
- protected final JTextArea _headerObjectsTextArea = new JTextArea();
- protected final JTextArea _libsTextArea = new JTextArea();
- protected final JCheckBox _headerObjectsCheck = new JCheckBox();
- protected final JCheckBox _libsCheck = new JCheckBox();
- protected final TitledSeparator _linkerOptionsSeparator = new TitledSeparator();
-
- /**
- * Default constructor
- */
- public HeaderForm()
- {
- initializePanel();
- }
-
- /**
- * Adds fill components to empty cells in the first row and first column of the grid.
- * This ensures that the grid spacing will be the same as shown in the designer.
- * @param cols an array of column indices in the first row where fill components should be added.
- * @param rows an array of row indices in the first column where fill components should be added.
- */
- void addFillComponents( Container panel, int[] cols, int[] rows )
- {
- Dimension filler = new Dimension(10,10);
-
- boolean filled_cell_11 = false;
- CellConstraints cc = new CellConstraints();
- if ( cols.length > 0 && rows.length > 0 )
- {
- if ( cols[0] == 1 && rows[0] == 1 )
- {
- /** add a rigid area */
- panel.add( Box.createRigidArea( filler ), cc.xy(1,1) );
- filled_cell_11 = true;
- }
- }
-
- for( int index = 0; index < cols.length; index++ )
- {
- if ( cols[index] == 1 && filled_cell_11 )
- {
- continue;
- }
- panel.add( Box.createRigidArea( filler ), cc.xy(cols[index],1) );
- }
-
- for( int index = 0; index < rows.length; index++ )
- {
- if ( rows[index] == 1 && filled_cell_11 )
- {
- continue;
- }
- panel.add( Box.createRigidArea( filler ), cc.xy(1,rows[index]) );
- }
-
- }
-
- /**
- * Helper method to load an image file from the CLASSPATH
- * @param imageName the package and name of the file to load relative to the CLASSPATH
- * @return an ImageIcon instance with the specified image file
- * @throws IllegalArgumentException if the image resource cannot be loaded.
- */
- public ImageIcon loadImage( String imageName )
- {
- try
- {
- ClassLoader classloader = getClass().getClassLoader();
- java.net.URL url = classloader.getResource( imageName );
- if ( url != null )
- {
- ImageIcon icon = new ImageIcon( url );
- return icon;
- }
- }
- catch( Exception e )
- {
- e.printStackTrace();
- }
- throw new IllegalArgumentException( "Unable to load image: " + imageName );
- }
-
- public JPanel createPanel()
- {
- JPanel jpanel1 = new JPanel();
- FormLayout formlayout1 = new FormLayout("FILL:7DLU:NONE,RIGHT:MAX(65DLU;DEFAULT):NONE,FILL:3DLU:NONE,FILL:DEFAULT:NONE,FILL:7DLU:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:GROW(1.0),FILL:7DLU:NONE","CENTER:9DLU:NONE,CENTER:DEFAULT:NONE,CENTER:9DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,FILL:DEFAULT:GROW(0.2),CENTER:3DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:9DLU:NONE");
- CellConstraints cc = new CellConstraints();
- jpanel1.setLayout(formlayout1);
-
- _headerTypeLabel.setName("headerTypeLabel");
- _headerTypeLabel.setText(Messages.getString("headerType"));
- jpanel1.add(_headerTypeLabel,cc.xy(2,2));
-
- _guiHeaderRadio.setActionCommand("GUI");
- _guiHeaderRadio.setName("guiHeaderRadio");
- _guiHeaderRadio.setText(Messages.getString("gui"));
- _headerButtonGroup.add(_guiHeaderRadio);
- jpanel1.add(_guiHeaderRadio,cc.xy(4,2));
-
- _consoleHeaderRadio.setActionCommand("Console");
- _consoleHeaderRadio.setName("consoleHeaderRadio");
- _consoleHeaderRadio.setText(Messages.getString("console"));
- _headerButtonGroup.add(_consoleHeaderRadio);
- jpanel1.add(_consoleHeaderRadio,cc.xy(6,2));
-
- _headerObjectsTextArea.setName("headerObjectsTextArea");
- JScrollPane jscrollpane1 = new JScrollPane();
- jscrollpane1.setViewportView(_headerObjectsTextArea);
- jscrollpane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
- jscrollpane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
- jpanel1.add(jscrollpane1,cc.xywh(4,6,4,1));
-
- _libsTextArea.setName("libsTextArea");
- JScrollPane jscrollpane2 = new JScrollPane();
- jscrollpane2.setViewportView(_libsTextArea);
- jscrollpane2.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
- jscrollpane2.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
- jpanel1.add(jscrollpane2,cc.xywh(4,8,4,1));
-
- _headerObjectsCheck.setActionCommand("Object files");
- _headerObjectsCheck.setName("headerObjectsCheck");
- _headerObjectsCheck.setText(Messages.getString("objectFiles"));
- jpanel1.add(_headerObjectsCheck,new CellConstraints(2,6,1,1,CellConstraints.DEFAULT,CellConstraints.TOP));
-
- _libsCheck.setActionCommand("w32api");
- _libsCheck.setName("libsCheck");
- _libsCheck.setText(Messages.getString("libs"));
- jpanel1.add(_libsCheck,new CellConstraints(2,8,1,1,CellConstraints.DEFAULT,CellConstraints.TOP));
-
- _linkerOptionsSeparator.setName("linkerOptionsSeparator");
- _linkerOptionsSeparator.setText(Messages.getString("linkerOptions"));
- jpanel1.add(_linkerOptionsSeparator,cc.xywh(2,4,6,1));
-
- addFillComponents(jpanel1,new int[]{ 1,2,3,4,5,6,7,8 },new int[]{ 1,2,3,4,5,6,7,8,9 });
- return jpanel1;
- }
-
- /**
- * Initializer
- */
- protected void initializePanel()
- {
- setLayout(new BorderLayout());
- add(createPanel(), BorderLayout.CENTER);
- }
-
-
-}
+package net.sf.launch4j.form;
+
+import com.jeta.forms.components.separator.TitledSeparator;
+import com.jgoodies.forms.layout.CellConstraints;
+import com.jgoodies.forms.layout.FormLayout;
+import java.awt.BorderLayout;
+import java.awt.Container;
+import java.awt.Dimension;
+import javax.swing.Box;
+import javax.swing.ButtonGroup;
+import javax.swing.ImageIcon;
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+
+public abstract class HeaderForm extends JPanel
+{
+ protected final JLabel _headerTypeLabel = new JLabel();
+ protected final JRadioButton _guiHeaderRadio = new JRadioButton();
+ protected final ButtonGroup _headerButtonGroup = new ButtonGroup();
+ protected final JRadioButton _consoleHeaderRadio = new JRadioButton();
+ protected final JTextArea _headerObjectsTextArea = new JTextArea();
+ protected final JTextArea _libsTextArea = new JTextArea();
+ protected final JCheckBox _headerObjectsCheck = new JCheckBox();
+ protected final JCheckBox _libsCheck = new JCheckBox();
+ protected final TitledSeparator _linkerOptionsSeparator = new TitledSeparator();
+
+ /**
+ * Default constructor
+ */
+ public HeaderForm()
+ {
+ initializePanel();
+ }
+
+ /**
+ * Adds fill components to empty cells in the first row and first column of the grid.
+ * This ensures that the grid spacing will be the same as shown in the designer.
+ * @param cols an array of column indices in the first row where fill components should be added.
+ * @param rows an array of row indices in the first column where fill components should be added.
+ */
+ void addFillComponents( Container panel, int[] cols, int[] rows )
+ {
+ Dimension filler = new Dimension(10,10);
+
+ boolean filled_cell_11 = false;
+ CellConstraints cc = new CellConstraints();
+ if ( cols.length > 0 && rows.length > 0 )
+ {
+ if ( cols[0] == 1 && rows[0] == 1 )
+ {
+ /** add a rigid area */
+ panel.add( Box.createRigidArea( filler ), cc.xy(1,1) );
+ filled_cell_11 = true;
+ }
+ }
+
+ for( int index = 0; index < cols.length; index++ )
+ {
+ if ( cols[index] == 1 && filled_cell_11 )
+ {
+ continue;
+ }
+ panel.add( Box.createRigidArea( filler ), cc.xy(cols[index],1) );
+ }
+
+ for( int index = 0; index < rows.length; index++ )
+ {
+ if ( rows[index] == 1 && filled_cell_11 )
+ {
+ continue;
+ }
+ panel.add( Box.createRigidArea( filler ), cc.xy(1,rows[index]) );
+ }
+
+ }
+
+ /**
+ * Helper method to load an image file from the CLASSPATH
+ * @param imageName the package and name of the file to load relative to the CLASSPATH
+ * @return an ImageIcon instance with the specified image file
+ * @throws IllegalArgumentException if the image resource cannot be loaded.
+ */
+ public ImageIcon loadImage( String imageName )
+ {
+ try
+ {
+ ClassLoader classloader = getClass().getClassLoader();
+ java.net.URL url = classloader.getResource( imageName );
+ if ( url != null )
+ {
+ ImageIcon icon = new ImageIcon( url );
+ return icon;
+ }
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+ throw new IllegalArgumentException( "Unable to load image: " + imageName );
+ }
+
+ public JPanel createPanel()
+ {
+ JPanel jpanel1 = new JPanel();
+ FormLayout formlayout1 = new FormLayout("FILL:7DLU:NONE,RIGHT:MAX(65DLU;DEFAULT):NONE,FILL:3DLU:NONE,FILL:DEFAULT:NONE,FILL:7DLU:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:GROW(1.0),FILL:7DLU:NONE","CENTER:9DLU:NONE,CENTER:DEFAULT:NONE,CENTER:9DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,FILL:DEFAULT:GROW(0.2),CENTER:3DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:9DLU:NONE");
+ CellConstraints cc = new CellConstraints();
+ jpanel1.setLayout(formlayout1);
+
+ _headerTypeLabel.setName("headerTypeLabel");
+ _headerTypeLabel.setText(Messages.getString("headerType"));
+ jpanel1.add(_headerTypeLabel,cc.xy(2,2));
+
+ _guiHeaderRadio.setActionCommand("GUI");
+ _guiHeaderRadio.setName("guiHeaderRadio");
+ _guiHeaderRadio.setText(Messages.getString("gui"));
+ _headerButtonGroup.add(_guiHeaderRadio);
+ jpanel1.add(_guiHeaderRadio,cc.xy(4,2));
+
+ _consoleHeaderRadio.setActionCommand("Console");
+ _consoleHeaderRadio.setName("consoleHeaderRadio");
+ _consoleHeaderRadio.setText(Messages.getString("console"));
+ _headerButtonGroup.add(_consoleHeaderRadio);
+ jpanel1.add(_consoleHeaderRadio,cc.xy(6,2));
+
+ _headerObjectsTextArea.setName("headerObjectsTextArea");
+ JScrollPane jscrollpane1 = new JScrollPane();
+ jscrollpane1.setViewportView(_headerObjectsTextArea);
+ jscrollpane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+ jscrollpane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+ jpanel1.add(jscrollpane1,cc.xywh(4,6,4,1));
+
+ _libsTextArea.setName("libsTextArea");
+ JScrollPane jscrollpane2 = new JScrollPane();
+ jscrollpane2.setViewportView(_libsTextArea);
+ jscrollpane2.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+ jscrollpane2.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+ jpanel1.add(jscrollpane2,cc.xywh(4,8,4,1));
+
+ _headerObjectsCheck.setActionCommand("Object files");
+ _headerObjectsCheck.setName("headerObjectsCheck");
+ _headerObjectsCheck.setText(Messages.getString("objectFiles"));
+ jpanel1.add(_headerObjectsCheck,new CellConstraints(2,6,1,1,CellConstraints.DEFAULT,CellConstraints.TOP));
+
+ _libsCheck.setActionCommand("w32api");
+ _libsCheck.setName("libsCheck");
+ _libsCheck.setText(Messages.getString("libs"));
+ jpanel1.add(_libsCheck,new CellConstraints(2,8,1,1,CellConstraints.DEFAULT,CellConstraints.TOP));
+
+ _linkerOptionsSeparator.setName("linkerOptionsSeparator");
+ _linkerOptionsSeparator.setText(Messages.getString("linkerOptions"));
+ jpanel1.add(_linkerOptionsSeparator,cc.xywh(2,4,6,1));
+
+ addFillComponents(jpanel1,new int[]{ 1,2,3,4,5,6,7,8 },new int[]{ 1,2,3,4,5,6,7,8,9 });
+ return jpanel1;
+ }
+
+ /**
+ * Initializer
+ */
+ protected void initializePanel()
+ {
+ setLayout(new BorderLayout());
+ add(createPanel(), BorderLayout.CENTER);
+ }
+
+
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/form/JreForm.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/form/JreForm.java
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/form/Messages.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/form/Messages.java
old mode 100755
new mode 100644
index aaf995f8019..dca5d244295
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/form/Messages.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/form/Messages.java
@@ -1,55 +1,55 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package net.sf.launch4j.form;
-
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-class Messages {
- private static final String BUNDLE_NAME = "net.sf.launch4j.form.messages";
-
- private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
- .getBundle(BUNDLE_NAME);
-
- private Messages() {
- }
-
- public static String getString(String key) {
- try {
- return RESOURCE_BUNDLE.getString(key);
- } catch (MissingResourceException e) {
- return '!' + key + '!';
- }
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+package net.sf.launch4j.form;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+class Messages {
+ private static final String BUNDLE_NAME = "net.sf.launch4j.form.messages";
+
+ private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
+ .getBundle(BUNDLE_NAME);
+
+ private Messages() {
+ }
+
+ public static String getString(String key) {
+ try {
+ return RESOURCE_BUNDLE.getString(key);
+ } catch (MissingResourceException e) {
+ return '!' + key + '!';
+ }
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/form/MessagesForm.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/form/MessagesForm.java
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/form/SingleInstanceForm.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/form/SingleInstanceForm.java
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/form/SplashForm.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/form/SplashForm.java
old mode 100755
new mode 100644
index 22a0ed8a3d0..7a3085ae2f3
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/form/SplashForm.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/form/SplashForm.java
@@ -1,166 +1,166 @@
-package net.sf.launch4j.form;
-
-import com.jgoodies.forms.layout.CellConstraints;
-import com.jgoodies.forms.layout.FormLayout;
-import java.awt.BorderLayout;
-import java.awt.Container;
-import java.awt.Dimension;
-import javax.swing.Box;
-import javax.swing.ImageIcon;
-import javax.swing.JButton;
-import javax.swing.JCheckBox;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JTextField;
-
-public abstract class SplashForm extends JPanel
-{
- protected final JLabel _splashFileLabel = new JLabel();
- protected final JLabel _waitForWindowLabel = new JLabel();
- protected final JLabel _timeoutLabel = new JLabel();
- protected final JCheckBox _timeoutErrCheck = new JCheckBox();
- protected final JTextField _splashFileField = new JTextField();
- protected final JTextField _timeoutField = new JTextField();
- protected final JButton _splashFileButton = new JButton();
- protected final JCheckBox _splashCheck = new JCheckBox();
- protected final JCheckBox _waitForWindowCheck = new JCheckBox();
-
- /**
- * Default constructor
- */
- public SplashForm()
- {
- initializePanel();
- }
-
- /**
- * Adds fill components to empty cells in the first row and first column of the grid.
- * This ensures that the grid spacing will be the same as shown in the designer.
- * @param cols an array of column indices in the first row where fill components should be added.
- * @param rows an array of row indices in the first column where fill components should be added.
- */
- void addFillComponents( Container panel, int[] cols, int[] rows )
- {
- Dimension filler = new Dimension(10,10);
-
- boolean filled_cell_11 = false;
- CellConstraints cc = new CellConstraints();
- if ( cols.length > 0 && rows.length > 0 )
- {
- if ( cols[0] == 1 && rows[0] == 1 )
- {
- /** add a rigid area */
- panel.add( Box.createRigidArea( filler ), cc.xy(1,1) );
- filled_cell_11 = true;
- }
- }
-
- for( int index = 0; index < cols.length; index++ )
- {
- if ( cols[index] == 1 && filled_cell_11 )
- {
- continue;
- }
- panel.add( Box.createRigidArea( filler ), cc.xy(cols[index],1) );
- }
-
- for( int index = 0; index < rows.length; index++ )
- {
- if ( rows[index] == 1 && filled_cell_11 )
- {
- continue;
- }
- panel.add( Box.createRigidArea( filler ), cc.xy(1,rows[index]) );
- }
-
- }
-
- /**
- * Helper method to load an image file from the CLASSPATH
- * @param imageName the package and name of the file to load relative to the CLASSPATH
- * @return an ImageIcon instance with the specified image file
- * @throws IllegalArgumentException if the image resource cannot be loaded.
- */
- public ImageIcon loadImage( String imageName )
- {
- try
- {
- ClassLoader classloader = getClass().getClassLoader();
- java.net.URL url = classloader.getResource( imageName );
- if ( url != null )
- {
- ImageIcon icon = new ImageIcon( url );
- return icon;
- }
- }
- catch( Exception e )
- {
- e.printStackTrace();
- }
- throw new IllegalArgumentException( "Unable to load image: " + imageName );
- }
-
- public JPanel createPanel()
- {
- JPanel jpanel1 = new JPanel();
- FormLayout formlayout1 = new FormLayout("FILL:7DLU:NONE,RIGHT:MAX(65DLU;DEFAULT):NONE,FILL:3DLU:NONE,FILL:60DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:3DLU:NONE,FILL:26PX:NONE,FILL:7DLU:NONE","CENTER:9DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:9DLU:NONE");
- CellConstraints cc = new CellConstraints();
- jpanel1.setLayout(formlayout1);
-
- _splashFileLabel.setIcon(loadImage("images/asterix.gif"));
- _splashFileLabel.setName("splashFileLabel");
- _splashFileLabel.setText(Messages.getString("splashFile"));
- jpanel1.add(_splashFileLabel,cc.xy(2,4));
-
- _waitForWindowLabel.setName("waitForWindowLabel");
- _waitForWindowLabel.setText(Messages.getString("waitForWindow"));
- jpanel1.add(_waitForWindowLabel,cc.xy(2,6));
-
- _timeoutLabel.setIcon(loadImage("images/asterix.gif"));
- _timeoutLabel.setName("timeoutLabel");
- _timeoutLabel.setText(Messages.getString("timeout"));
- jpanel1.add(_timeoutLabel,cc.xy(2,8));
-
- _timeoutErrCheck.setActionCommand("Signal error on timeout");
- _timeoutErrCheck.setName("timeoutErrCheck");
- _timeoutErrCheck.setText(Messages.getString("timeoutErr"));
- _timeoutErrCheck.setToolTipText(Messages.getString("timeoutErrTip"));
- jpanel1.add(_timeoutErrCheck,cc.xywh(4,10,2,1));
-
- _splashFileField.setName("splashFileField");
- _splashFileField.setToolTipText(Messages.getString("splashFileTip"));
- jpanel1.add(_splashFileField,cc.xywh(4,4,2,1));
-
- _timeoutField.setName("timeoutField");
- _timeoutField.setToolTipText(Messages.getString("timeoutTip"));
- jpanel1.add(_timeoutField,cc.xy(4,8));
-
- _splashFileButton.setIcon(loadImage("images/open16.png"));
- _splashFileButton.setName("splashFileButton");
- jpanel1.add(_splashFileButton,cc.xy(7,4));
-
- _splashCheck.setActionCommand("Enable splash screen");
- _splashCheck.setName("splashCheck");
- _splashCheck.setText(Messages.getString("enableSplash"));
- jpanel1.add(_splashCheck,cc.xywh(4,2,2,1));
-
- _waitForWindowCheck.setActionCommand("Close splash screen when an application window appears");
- _waitForWindowCheck.setName("waitForWindowCheck");
- _waitForWindowCheck.setText(Messages.getString("waitForWindowText"));
- jpanel1.add(_waitForWindowCheck,cc.xywh(4,6,2,1));
-
- addFillComponents(jpanel1,new int[]{ 1,2,3,4,5,6,7,8 },new int[]{ 1,2,3,4,5,6,7,8,9,10,11 });
- return jpanel1;
- }
-
- /**
- * Initializer
- */
- protected void initializePanel()
- {
- setLayout(new BorderLayout());
- add(createPanel(), BorderLayout.CENTER);
- }
-
-
-}
+package net.sf.launch4j.form;
+
+import com.jgoodies.forms.layout.CellConstraints;
+import com.jgoodies.forms.layout.FormLayout;
+import java.awt.BorderLayout;
+import java.awt.Container;
+import java.awt.Dimension;
+import javax.swing.Box;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+public abstract class SplashForm extends JPanel
+{
+ protected final JLabel _splashFileLabel = new JLabel();
+ protected final JLabel _waitForWindowLabel = new JLabel();
+ protected final JLabel _timeoutLabel = new JLabel();
+ protected final JCheckBox _timeoutErrCheck = new JCheckBox();
+ protected final JTextField _splashFileField = new JTextField();
+ protected final JTextField _timeoutField = new JTextField();
+ protected final JButton _splashFileButton = new JButton();
+ protected final JCheckBox _splashCheck = new JCheckBox();
+ protected final JCheckBox _waitForWindowCheck = new JCheckBox();
+
+ /**
+ * Default constructor
+ */
+ public SplashForm()
+ {
+ initializePanel();
+ }
+
+ /**
+ * Adds fill components to empty cells in the first row and first column of the grid.
+ * This ensures that the grid spacing will be the same as shown in the designer.
+ * @param cols an array of column indices in the first row where fill components should be added.
+ * @param rows an array of row indices in the first column where fill components should be added.
+ */
+ void addFillComponents( Container panel, int[] cols, int[] rows )
+ {
+ Dimension filler = new Dimension(10,10);
+
+ boolean filled_cell_11 = false;
+ CellConstraints cc = new CellConstraints();
+ if ( cols.length > 0 && rows.length > 0 )
+ {
+ if ( cols[0] == 1 && rows[0] == 1 )
+ {
+ /** add a rigid area */
+ panel.add( Box.createRigidArea( filler ), cc.xy(1,1) );
+ filled_cell_11 = true;
+ }
+ }
+
+ for( int index = 0; index < cols.length; index++ )
+ {
+ if ( cols[index] == 1 && filled_cell_11 )
+ {
+ continue;
+ }
+ panel.add( Box.createRigidArea( filler ), cc.xy(cols[index],1) );
+ }
+
+ for( int index = 0; index < rows.length; index++ )
+ {
+ if ( rows[index] == 1 && filled_cell_11 )
+ {
+ continue;
+ }
+ panel.add( Box.createRigidArea( filler ), cc.xy(1,rows[index]) );
+ }
+
+ }
+
+ /**
+ * Helper method to load an image file from the CLASSPATH
+ * @param imageName the package and name of the file to load relative to the CLASSPATH
+ * @return an ImageIcon instance with the specified image file
+ * @throws IllegalArgumentException if the image resource cannot be loaded.
+ */
+ public ImageIcon loadImage( String imageName )
+ {
+ try
+ {
+ ClassLoader classloader = getClass().getClassLoader();
+ java.net.URL url = classloader.getResource( imageName );
+ if ( url != null )
+ {
+ ImageIcon icon = new ImageIcon( url );
+ return icon;
+ }
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+ throw new IllegalArgumentException( "Unable to load image: " + imageName );
+ }
+
+ public JPanel createPanel()
+ {
+ JPanel jpanel1 = new JPanel();
+ FormLayout formlayout1 = new FormLayout("FILL:7DLU:NONE,RIGHT:MAX(65DLU;DEFAULT):NONE,FILL:3DLU:NONE,FILL:60DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:3DLU:NONE,FILL:26PX:NONE,FILL:7DLU:NONE","CENTER:9DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:9DLU:NONE");
+ CellConstraints cc = new CellConstraints();
+ jpanel1.setLayout(formlayout1);
+
+ _splashFileLabel.setIcon(loadImage("images/asterix.gif"));
+ _splashFileLabel.setName("splashFileLabel");
+ _splashFileLabel.setText(Messages.getString("splashFile"));
+ jpanel1.add(_splashFileLabel,cc.xy(2,4));
+
+ _waitForWindowLabel.setName("waitForWindowLabel");
+ _waitForWindowLabel.setText(Messages.getString("waitForWindow"));
+ jpanel1.add(_waitForWindowLabel,cc.xy(2,6));
+
+ _timeoutLabel.setIcon(loadImage("images/asterix.gif"));
+ _timeoutLabel.setName("timeoutLabel");
+ _timeoutLabel.setText(Messages.getString("timeout"));
+ jpanel1.add(_timeoutLabel,cc.xy(2,8));
+
+ _timeoutErrCheck.setActionCommand("Signal error on timeout");
+ _timeoutErrCheck.setName("timeoutErrCheck");
+ _timeoutErrCheck.setText(Messages.getString("timeoutErr"));
+ _timeoutErrCheck.setToolTipText(Messages.getString("timeoutErrTip"));
+ jpanel1.add(_timeoutErrCheck,cc.xywh(4,10,2,1));
+
+ _splashFileField.setName("splashFileField");
+ _splashFileField.setToolTipText(Messages.getString("splashFileTip"));
+ jpanel1.add(_splashFileField,cc.xywh(4,4,2,1));
+
+ _timeoutField.setName("timeoutField");
+ _timeoutField.setToolTipText(Messages.getString("timeoutTip"));
+ jpanel1.add(_timeoutField,cc.xy(4,8));
+
+ _splashFileButton.setIcon(loadImage("images/open16.png"));
+ _splashFileButton.setName("splashFileButton");
+ jpanel1.add(_splashFileButton,cc.xy(7,4));
+
+ _splashCheck.setActionCommand("Enable splash screen");
+ _splashCheck.setName("splashCheck");
+ _splashCheck.setText(Messages.getString("enableSplash"));
+ jpanel1.add(_splashCheck,cc.xywh(4,2,2,1));
+
+ _waitForWindowCheck.setActionCommand("Close splash screen when an application window appears");
+ _waitForWindowCheck.setName("waitForWindowCheck");
+ _waitForWindowCheck.setText(Messages.getString("waitForWindowText"));
+ jpanel1.add(_waitForWindowCheck,cc.xywh(4,6,2,1));
+
+ addFillComponents(jpanel1,new int[]{ 1,2,3,4,5,6,7,8 },new int[]{ 1,2,3,4,5,6,7,8,9,10,11 });
+ return jpanel1;
+ }
+
+ /**
+ * Initializer
+ */
+ protected void initializePanel()
+ {
+ setLayout(new BorderLayout());
+ add(createPanel(), BorderLayout.CENTER);
+ }
+
+
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/form/VersionInfoForm.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/form/VersionInfoForm.java
old mode 100755
new mode 100644
index 5a4d9440c60..f1f3c7e433e
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/form/VersionInfoForm.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/form/VersionInfoForm.java
@@ -1,232 +1,232 @@
-package net.sf.launch4j.form;
-
-import com.jeta.forms.components.separator.TitledSeparator;
-import com.jgoodies.forms.layout.CellConstraints;
-import com.jgoodies.forms.layout.FormLayout;
-import java.awt.BorderLayout;
-import java.awt.Container;
-import java.awt.Dimension;
-import javax.swing.Box;
-import javax.swing.ImageIcon;
-import javax.swing.JCheckBox;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JTextField;
-
-public abstract class VersionInfoForm extends JPanel
-{
- protected final JCheckBox _versionInfoCheck = new JCheckBox();
- protected final JLabel _fileVersionLabel = new JLabel();
- protected final JTextField _fileVersionField = new JTextField();
- protected final TitledSeparator _addVersionInfoSeparator = new TitledSeparator();
- protected final JLabel _productVersionLabel = new JLabel();
- protected final JTextField _productVersionField = new JTextField();
- protected final JLabel _fileDescriptionLabel = new JLabel();
- protected final JTextField _fileDescriptionField = new JTextField();
- protected final JLabel _copyrightLabel = new JLabel();
- protected final JTextField _copyrightField = new JTextField();
- protected final JLabel _txtFileVersionLabel = new JLabel();
- protected final JTextField _txtFileVersionField = new JTextField();
- protected final JLabel _txtProductVersionLabel = new JLabel();
- protected final JTextField _txtProductVersionField = new JTextField();
- protected final JLabel _productNameLabel = new JLabel();
- protected final JTextField _productNameField = new JTextField();
- protected final JLabel _originalFilenameLabel = new JLabel();
- protected final JTextField _originalFilenameField = new JTextField();
- protected final JLabel _internalNameLabel = new JLabel();
- protected final JTextField _internalNameField = new JTextField();
- protected final JLabel _companyNameLabel = new JLabel();
- protected final JTextField _companyNameField = new JTextField();
-
- /**
- * Default constructor
- */
- public VersionInfoForm()
- {
- initializePanel();
- }
-
- /**
- * Adds fill components to empty cells in the first row and first column of the grid.
- * This ensures that the grid spacing will be the same as shown in the designer.
- * @param cols an array of column indices in the first row where fill components should be added.
- * @param rows an array of row indices in the first column where fill components should be added.
- */
- void addFillComponents( Container panel, int[] cols, int[] rows )
- {
- Dimension filler = new Dimension(10,10);
-
- boolean filled_cell_11 = false;
- CellConstraints cc = new CellConstraints();
- if ( cols.length > 0 && rows.length > 0 )
- {
- if ( cols[0] == 1 && rows[0] == 1 )
- {
- /** add a rigid area */
- panel.add( Box.createRigidArea( filler ), cc.xy(1,1) );
- filled_cell_11 = true;
- }
- }
-
- for( int index = 0; index < cols.length; index++ )
- {
- if ( cols[index] == 1 && filled_cell_11 )
- {
- continue;
- }
- panel.add( Box.createRigidArea( filler ), cc.xy(cols[index],1) );
- }
-
- for( int index = 0; index < rows.length; index++ )
- {
- if ( rows[index] == 1 && filled_cell_11 )
- {
- continue;
- }
- panel.add( Box.createRigidArea( filler ), cc.xy(1,rows[index]) );
- }
-
- }
-
- /**
- * Helper method to load an image file from the CLASSPATH
- * @param imageName the package and name of the file to load relative to the CLASSPATH
- * @return an ImageIcon instance with the specified image file
- * @throws IllegalArgumentException if the image resource cannot be loaded.
- */
- public ImageIcon loadImage( String imageName )
- {
- try
- {
- ClassLoader classloader = getClass().getClassLoader();
- java.net.URL url = classloader.getResource( imageName );
- if ( url != null )
- {
- ImageIcon icon = new ImageIcon( url );
- return icon;
- }
- }
- catch( Exception e )
- {
- e.printStackTrace();
- }
- throw new IllegalArgumentException( "Unable to load image: " + imageName );
- }
-
- public JPanel createPanel()
- {
- JPanel jpanel1 = new JPanel();
- FormLayout formlayout1 = new FormLayout("FILL:7DLU:NONE,RIGHT:MAX(65DLU;DEFAULT):NONE,FILL:3DLU:NONE,FILL:60DLU:NONE,FILL:7DLU:NONE,RIGHT:DEFAULT:NONE,FILL:3DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:7DLU:NONE","CENTER:9DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:9DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:9DLU:NONE");
- CellConstraints cc = new CellConstraints();
- jpanel1.setLayout(formlayout1);
-
- _versionInfoCheck.setActionCommand("Add version information");
- _versionInfoCheck.setName("versionInfoCheck");
- _versionInfoCheck.setText(Messages.getString("addVersionInfo"));
- jpanel1.add(_versionInfoCheck,cc.xywh(4,2,5,1));
-
- _fileVersionLabel.setIcon(loadImage("images/asterix.gif"));
- _fileVersionLabel.setName("fileVersionLabel");
- _fileVersionLabel.setText(Messages.getString("fileVersion"));
- jpanel1.add(_fileVersionLabel,cc.xy(2,4));
-
- _fileVersionField.setName("fileVersionField");
- _fileVersionField.setToolTipText(Messages.getString("fileVersionTip"));
- jpanel1.add(_fileVersionField,cc.xy(4,4));
-
- _addVersionInfoSeparator.setName("addVersionInfoSeparator");
- _addVersionInfoSeparator.setText("Additional information");
- jpanel1.add(_addVersionInfoSeparator,cc.xywh(2,10,7,1));
-
- _productVersionLabel.setIcon(loadImage("images/asterix.gif"));
- _productVersionLabel.setName("productVersionLabel");
- _productVersionLabel.setText(Messages.getString("productVersion"));
- jpanel1.add(_productVersionLabel,cc.xy(2,12));
-
- _productVersionField.setName("productVersionField");
- _productVersionField.setToolTipText(Messages.getString("productVersionTip"));
- jpanel1.add(_productVersionField,cc.xy(4,12));
-
- _fileDescriptionLabel.setIcon(loadImage("images/asterix.gif"));
- _fileDescriptionLabel.setName("fileDescriptionLabel");
- _fileDescriptionLabel.setText(Messages.getString("fileDescription"));
- jpanel1.add(_fileDescriptionLabel,cc.xy(2,6));
-
- _fileDescriptionField.setName("fileDescriptionField");
- _fileDescriptionField.setToolTipText(Messages.getString("fileDescriptionTip"));
- jpanel1.add(_fileDescriptionField,cc.xywh(4,6,5,1));
-
- _copyrightLabel.setIcon(loadImage("images/asterix.gif"));
- _copyrightLabel.setName("copyrightLabel");
- _copyrightLabel.setText(Messages.getString("copyright"));
- jpanel1.add(_copyrightLabel,cc.xy(2,8));
-
- _copyrightField.setName("copyrightField");
- jpanel1.add(_copyrightField,cc.xywh(4,8,5,1));
-
- _txtFileVersionLabel.setIcon(loadImage("images/asterix.gif"));
- _txtFileVersionLabel.setName("txtFileVersionLabel");
- _txtFileVersionLabel.setText(Messages.getString("txtFileVersion"));
- jpanel1.add(_txtFileVersionLabel,cc.xy(6,4));
-
- _txtFileVersionField.setName("txtFileVersionField");
- _txtFileVersionField.setToolTipText(Messages.getString("txtFileVersionTip"));
- jpanel1.add(_txtFileVersionField,cc.xy(8,4));
-
- _txtProductVersionLabel.setIcon(loadImage("images/asterix.gif"));
- _txtProductVersionLabel.setName("txtProductVersionLabel");
- _txtProductVersionLabel.setText(Messages.getString("txtProductVersion"));
- jpanel1.add(_txtProductVersionLabel,cc.xy(6,12));
-
- _txtProductVersionField.setName("txtProductVersionField");
- _txtProductVersionField.setToolTipText(Messages.getString("txtProductVersionTip"));
- jpanel1.add(_txtProductVersionField,cc.xy(8,12));
-
- _productNameLabel.setIcon(loadImage("images/asterix.gif"));
- _productNameLabel.setName("productNameLabel");
- _productNameLabel.setText(Messages.getString("productName"));
- jpanel1.add(_productNameLabel,cc.xy(2,14));
-
- _productNameField.setName("productNameField");
- jpanel1.add(_productNameField,cc.xywh(4,14,5,1));
-
- _originalFilenameLabel.setIcon(loadImage("images/asterix.gif"));
- _originalFilenameLabel.setName("originalFilenameLabel");
- _originalFilenameLabel.setText(Messages.getString("originalFilename"));
- jpanel1.add(_originalFilenameLabel,cc.xy(2,20));
-
- _originalFilenameField.setName("originalFilenameField");
- _originalFilenameField.setToolTipText(Messages.getString("originalFilenameTip"));
- jpanel1.add(_originalFilenameField,cc.xywh(4,20,5,1));
-
- _internalNameLabel.setIcon(loadImage("images/asterix.gif"));
- _internalNameLabel.setName("internalNameLabel");
- _internalNameLabel.setText(Messages.getString("internalName"));
- jpanel1.add(_internalNameLabel,cc.xy(2,18));
-
- _internalNameField.setName("internalNameField");
- _internalNameField.setToolTipText(Messages.getString("internalNameTip"));
- jpanel1.add(_internalNameField,cc.xywh(4,18,5,1));
-
- _companyNameLabel.setName("companyNameLabel");
- _companyNameLabel.setText(Messages.getString("companyName"));
- jpanel1.add(_companyNameLabel,cc.xy(2,16));
-
- _companyNameField.setName("companyNameField");
- jpanel1.add(_companyNameField,cc.xywh(4,16,5,1));
-
- addFillComponents(jpanel1,new int[]{ 1,2,3,4,5,6,7,8,9 },new int[]{ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21 });
- return jpanel1;
- }
-
- /**
- * Initializer
- */
- protected void initializePanel()
- {
- setLayout(new BorderLayout());
- add(createPanel(), BorderLayout.CENTER);
- }
-
-
-}
+package net.sf.launch4j.form;
+
+import com.jeta.forms.components.separator.TitledSeparator;
+import com.jgoodies.forms.layout.CellConstraints;
+import com.jgoodies.forms.layout.FormLayout;
+import java.awt.BorderLayout;
+import java.awt.Container;
+import java.awt.Dimension;
+import javax.swing.Box;
+import javax.swing.ImageIcon;
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+public abstract class VersionInfoForm extends JPanel
+{
+ protected final JCheckBox _versionInfoCheck = new JCheckBox();
+ protected final JLabel _fileVersionLabel = new JLabel();
+ protected final JTextField _fileVersionField = new JTextField();
+ protected final TitledSeparator _addVersionInfoSeparator = new TitledSeparator();
+ protected final JLabel _productVersionLabel = new JLabel();
+ protected final JTextField _productVersionField = new JTextField();
+ protected final JLabel _fileDescriptionLabel = new JLabel();
+ protected final JTextField _fileDescriptionField = new JTextField();
+ protected final JLabel _copyrightLabel = new JLabel();
+ protected final JTextField _copyrightField = new JTextField();
+ protected final JLabel _txtFileVersionLabel = new JLabel();
+ protected final JTextField _txtFileVersionField = new JTextField();
+ protected final JLabel _txtProductVersionLabel = new JLabel();
+ protected final JTextField _txtProductVersionField = new JTextField();
+ protected final JLabel _productNameLabel = new JLabel();
+ protected final JTextField _productNameField = new JTextField();
+ protected final JLabel _originalFilenameLabel = new JLabel();
+ protected final JTextField _originalFilenameField = new JTextField();
+ protected final JLabel _internalNameLabel = new JLabel();
+ protected final JTextField _internalNameField = new JTextField();
+ protected final JLabel _companyNameLabel = new JLabel();
+ protected final JTextField _companyNameField = new JTextField();
+
+ /**
+ * Default constructor
+ */
+ public VersionInfoForm()
+ {
+ initializePanel();
+ }
+
+ /**
+ * Adds fill components to empty cells in the first row and first column of the grid.
+ * This ensures that the grid spacing will be the same as shown in the designer.
+ * @param cols an array of column indices in the first row where fill components should be added.
+ * @param rows an array of row indices in the first column where fill components should be added.
+ */
+ void addFillComponents( Container panel, int[] cols, int[] rows )
+ {
+ Dimension filler = new Dimension(10,10);
+
+ boolean filled_cell_11 = false;
+ CellConstraints cc = new CellConstraints();
+ if ( cols.length > 0 && rows.length > 0 )
+ {
+ if ( cols[0] == 1 && rows[0] == 1 )
+ {
+ /** add a rigid area */
+ panel.add( Box.createRigidArea( filler ), cc.xy(1,1) );
+ filled_cell_11 = true;
+ }
+ }
+
+ for( int index = 0; index < cols.length; index++ )
+ {
+ if ( cols[index] == 1 && filled_cell_11 )
+ {
+ continue;
+ }
+ panel.add( Box.createRigidArea( filler ), cc.xy(cols[index],1) );
+ }
+
+ for( int index = 0; index < rows.length; index++ )
+ {
+ if ( rows[index] == 1 && filled_cell_11 )
+ {
+ continue;
+ }
+ panel.add( Box.createRigidArea( filler ), cc.xy(1,rows[index]) );
+ }
+
+ }
+
+ /**
+ * Helper method to load an image file from the CLASSPATH
+ * @param imageName the package and name of the file to load relative to the CLASSPATH
+ * @return an ImageIcon instance with the specified image file
+ * @throws IllegalArgumentException if the image resource cannot be loaded.
+ */
+ public ImageIcon loadImage( String imageName )
+ {
+ try
+ {
+ ClassLoader classloader = getClass().getClassLoader();
+ java.net.URL url = classloader.getResource( imageName );
+ if ( url != null )
+ {
+ ImageIcon icon = new ImageIcon( url );
+ return icon;
+ }
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+ throw new IllegalArgumentException( "Unable to load image: " + imageName );
+ }
+
+ public JPanel createPanel()
+ {
+ JPanel jpanel1 = new JPanel();
+ FormLayout formlayout1 = new FormLayout("FILL:7DLU:NONE,RIGHT:MAX(65DLU;DEFAULT):NONE,FILL:3DLU:NONE,FILL:60DLU:NONE,FILL:7DLU:NONE,RIGHT:DEFAULT:NONE,FILL:3DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:7DLU:NONE","CENTER:9DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:9DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:9DLU:NONE");
+ CellConstraints cc = new CellConstraints();
+ jpanel1.setLayout(formlayout1);
+
+ _versionInfoCheck.setActionCommand("Add version information");
+ _versionInfoCheck.setName("versionInfoCheck");
+ _versionInfoCheck.setText(Messages.getString("addVersionInfo"));
+ jpanel1.add(_versionInfoCheck,cc.xywh(4,2,5,1));
+
+ _fileVersionLabel.setIcon(loadImage("images/asterix.gif"));
+ _fileVersionLabel.setName("fileVersionLabel");
+ _fileVersionLabel.setText(Messages.getString("fileVersion"));
+ jpanel1.add(_fileVersionLabel,cc.xy(2,4));
+
+ _fileVersionField.setName("fileVersionField");
+ _fileVersionField.setToolTipText(Messages.getString("fileVersionTip"));
+ jpanel1.add(_fileVersionField,cc.xy(4,4));
+
+ _addVersionInfoSeparator.setName("addVersionInfoSeparator");
+ _addVersionInfoSeparator.setText("Additional information");
+ jpanel1.add(_addVersionInfoSeparator,cc.xywh(2,10,7,1));
+
+ _productVersionLabel.setIcon(loadImage("images/asterix.gif"));
+ _productVersionLabel.setName("productVersionLabel");
+ _productVersionLabel.setText(Messages.getString("productVersion"));
+ jpanel1.add(_productVersionLabel,cc.xy(2,12));
+
+ _productVersionField.setName("productVersionField");
+ _productVersionField.setToolTipText(Messages.getString("productVersionTip"));
+ jpanel1.add(_productVersionField,cc.xy(4,12));
+
+ _fileDescriptionLabel.setIcon(loadImage("images/asterix.gif"));
+ _fileDescriptionLabel.setName("fileDescriptionLabel");
+ _fileDescriptionLabel.setText(Messages.getString("fileDescription"));
+ jpanel1.add(_fileDescriptionLabel,cc.xy(2,6));
+
+ _fileDescriptionField.setName("fileDescriptionField");
+ _fileDescriptionField.setToolTipText(Messages.getString("fileDescriptionTip"));
+ jpanel1.add(_fileDescriptionField,cc.xywh(4,6,5,1));
+
+ _copyrightLabel.setIcon(loadImage("images/asterix.gif"));
+ _copyrightLabel.setName("copyrightLabel");
+ _copyrightLabel.setText(Messages.getString("copyright"));
+ jpanel1.add(_copyrightLabel,cc.xy(2,8));
+
+ _copyrightField.setName("copyrightField");
+ jpanel1.add(_copyrightField,cc.xywh(4,8,5,1));
+
+ _txtFileVersionLabel.setIcon(loadImage("images/asterix.gif"));
+ _txtFileVersionLabel.setName("txtFileVersionLabel");
+ _txtFileVersionLabel.setText(Messages.getString("txtFileVersion"));
+ jpanel1.add(_txtFileVersionLabel,cc.xy(6,4));
+
+ _txtFileVersionField.setName("txtFileVersionField");
+ _txtFileVersionField.setToolTipText(Messages.getString("txtFileVersionTip"));
+ jpanel1.add(_txtFileVersionField,cc.xy(8,4));
+
+ _txtProductVersionLabel.setIcon(loadImage("images/asterix.gif"));
+ _txtProductVersionLabel.setName("txtProductVersionLabel");
+ _txtProductVersionLabel.setText(Messages.getString("txtProductVersion"));
+ jpanel1.add(_txtProductVersionLabel,cc.xy(6,12));
+
+ _txtProductVersionField.setName("txtProductVersionField");
+ _txtProductVersionField.setToolTipText(Messages.getString("txtProductVersionTip"));
+ jpanel1.add(_txtProductVersionField,cc.xy(8,12));
+
+ _productNameLabel.setIcon(loadImage("images/asterix.gif"));
+ _productNameLabel.setName("productNameLabel");
+ _productNameLabel.setText(Messages.getString("productName"));
+ jpanel1.add(_productNameLabel,cc.xy(2,14));
+
+ _productNameField.setName("productNameField");
+ jpanel1.add(_productNameField,cc.xywh(4,14,5,1));
+
+ _originalFilenameLabel.setIcon(loadImage("images/asterix.gif"));
+ _originalFilenameLabel.setName("originalFilenameLabel");
+ _originalFilenameLabel.setText(Messages.getString("originalFilename"));
+ jpanel1.add(_originalFilenameLabel,cc.xy(2,20));
+
+ _originalFilenameField.setName("originalFilenameField");
+ _originalFilenameField.setToolTipText(Messages.getString("originalFilenameTip"));
+ jpanel1.add(_originalFilenameField,cc.xywh(4,20,5,1));
+
+ _internalNameLabel.setIcon(loadImage("images/asterix.gif"));
+ _internalNameLabel.setName("internalNameLabel");
+ _internalNameLabel.setText(Messages.getString("internalName"));
+ jpanel1.add(_internalNameLabel,cc.xy(2,18));
+
+ _internalNameField.setName("internalNameField");
+ _internalNameField.setToolTipText(Messages.getString("internalNameTip"));
+ jpanel1.add(_internalNameField,cc.xywh(4,18,5,1));
+
+ _companyNameLabel.setName("companyNameLabel");
+ _companyNameLabel.setText(Messages.getString("companyName"));
+ jpanel1.add(_companyNameLabel,cc.xy(2,16));
+
+ _companyNameField.setName("companyNameField");
+ jpanel1.add(_companyNameField,cc.xywh(4,16,5,1));
+
+ addFillComponents(jpanel1,new int[]{ 1,2,3,4,5,6,7,8,9 },new int[]{ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21 });
+ return jpanel1;
+ }
+
+ /**
+ * Initializer
+ */
+ protected void initializePanel()
+ {
+ setLayout(new BorderLayout());
+ add(createPanel(), BorderLayout.CENTER);
+ }
+
+
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/form/messages.properties b/build/windows/launcher/launch4j/src/net/sf/launch4j/form/messages.properties
old mode 100755
new mode 100644
index 1be6c9584f5..2d3cbd90324
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/form/messages.properties
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/form/messages.properties
@@ -1,146 +1,146 @@
-#
-# Launch4j (http://launch4j.sourceforge.net/)
-# Cross-platform Java application wrapper for creating Windows native executables.
-#
-# Copyright (c) 2004, 2007 Grzegorz Kowal
-#
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without modification,
-# are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-# this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-# this list of conditions and the following disclaimer in the documentation
-# and/or other materials provided with the distribution.
-# * Neither the name of the Launch4j nor the names of its contributors
-# may be used to endorse or promote products derived from this software without
-# specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-
-log=Log
-
-outfile=Output file:
-outfileTip=Output executable file.
-customProcName=Custom process name and XP style manifest
-stayAlive=Stay alive after launching a GUI application
-manifest=Manifest:
-manifestTip=Wrapper's manifest for User Account Control, will not enable XP styles!
-icon=Icon:
-iconTip=Application icon.
-jar=Jar:
-jarTip=Application jar.
-dontWrapJar=Dont't wrap the jar, launch only
-cmdLine=Command line args:
-cmdLineTip=Constant command line arguments passed to the application.
-options=Options:
-chdir=Change dir:
-chdirTip=Change current directory to a location relative to the executable. Empty field has no effect, . - changes directory to the exe location.
-priority=Process priority:
-normalPriority=Normal
-idlePriority=Idle
-highPriority=High
-downloadAndSupport=Java download and support
-errorTitle=Error title:
-errorTitleTip=Launch4j signals errors using a message box, you can set it's title to the application's name.
-downloadUrl=Java download URL:
-supportUrl=Support URL:
-
-new=New
-accept=Accept
-remove=Remove
-customClassPath=Custom classpath
-classPath=Classpath:
-mainClass=Main class:
-editClassPath=Edit item:
-importClassPath=Import attributes from a jar's manifest.
-
-headerType=Header type:
-gui=GUI
-console=Console
-objectFiles=Object files:
-libs=w32api:
-linkerOptions=Custom header - linker options
-
-enableSingleInstance=Allow only a single instance of the application
-mutexName=Mutex name
-mutexNameTip=Mutex name that will uniquely identify your application.
-windowTitle=Window title
-windowTitleTip=Title of the GUI application window to bring up on attempt to start a next instance.
-
-jrePath=Bundled JRE path:
-jrePathTip=Bundled JRE path relative to the executable or absolute.
-jreMin=Min JRE version:
-jreMax=Max JRE version:
-dontUsePrivateJres=Don't use private JREs
-jvmOptions=JVM options:
-jvmOptionsTip=Accepts everything you would normally pass to java/javaw launcher: assertion options, system properties and X options.
-initialHeapSize=Initial heap size:
-maxHeapSize=Max heap size:
-freeMemory=% of free memory
-jdkPreference=JDK/JRE preference:
-addVariables=Add variables:
-addVariablesTip=Add special variable or map environment variables to system properties.
-exeDirVarTip=Executable's runtime directory path.
-exeFileVarTip=Executable's runtime file path (directory and filename).
-varsAndRegistry=Variables / registry:
-envVar=Environment var:
-property=Property
-propertyTip=Map a variable to a system property.
-option=Option
-optionTip=Pass a JVM option using a variable.
-
-setVariables=Set variables:
-
-enableSplash=Enable splash screen
-splashFile=Splash file:
-splashFileTip=Splash screen file in BMP format.
-waitForWindow=Wait for window
-waitForWindowText=Close splash screen when an application window appears
-timeout=Timeout [s]:
-timeoutTip=Number of seconds after which the splash screen must close. Splash timeout may cause an error depending on splashTimeoutErr property.
-timeoutErr=Signal error on timeout
-timeoutErrTip=True signals an error on splash timeout, false closes the splash screen quietly.
-
-version=Version
-additionalInfo=Additional information
-addVersionInfo=Add version information
-fileVersion=File version:
-fileVersionTip=Version number 'x.x.x.x'
-productVersion=Product version:
-productVersionTip=Version number 'x.x.x.x'
-fileDescription=File description:
-fileDescriptionTip=File description presented to the user.
-copyright=Copyright:
-txtFileVersion=Free form:
-txtFileVersionTip=Free form file version, for example '1.20.RC1'.
-txtProductVersion=Free form:
-txtProductVersionTip=Free form product version, for example '1.20.RC1'.
-productName=Product name:
-originalFilename=Original filename:
-originalFilenameTip=Original name of the file without the path. Allows to determine whether a file has been renamed by a user.
-internalName=Internal name:
-internalNameTip=Internal name without extension, original filename or module name for example.
-companyName=Company name:
-
-addMessages=Add custom messages
-startupErr=Startup error:
-bundledJreErr=Bundled JRE error:
-jreVersionErr=JRE version error:
-jreVersionErrTip=Launch4j will append the required version number at the end of this message.
-launcherErr=Launcher error:
-instanceAlreadyExistsMsg=Inst. already exists:
-instanceAlreadyExistsMsgTip=Message displayed by single instance console applications if an instance already exists.
+#
+# Launch4j (http://launch4j.sourceforge.net/)
+# Cross-platform Java application wrapper for creating Windows native executables.
+#
+# Copyright (c) 2004, 2007 Grzegorz Kowal
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification,
+# are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Launch4j nor the names of its contributors
+# may be used to endorse or promote products derived from this software without
+# specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+log=Log
+
+outfile=Output file:
+outfileTip=Output executable file.
+customProcName=Custom process name and XP style manifest
+stayAlive=Stay alive after launching a GUI application
+manifest=Manifest:
+manifestTip=Wrapper's manifest for User Account Control, will not enable XP styles!
+icon=Icon:
+iconTip=Application icon.
+jar=Jar:
+jarTip=Application jar.
+dontWrapJar=Dont't wrap the jar, launch only
+cmdLine=Command line args:
+cmdLineTip=Constant command line arguments passed to the application.
+options=Options:
+chdir=Change dir:
+chdirTip=Change current directory to a location relative to the executable. Empty field has no effect, . - changes directory to the exe location.
+priority=Process priority:
+normalPriority=Normal
+idlePriority=Idle
+highPriority=High
+downloadAndSupport=Java download and support
+errorTitle=Error title:
+errorTitleTip=Launch4j signals errors using a message box, you can set it's title to the application's name.
+downloadUrl=Java download URL:
+supportUrl=Support URL:
+
+new=New
+accept=Accept
+remove=Remove
+customClassPath=Custom classpath
+classPath=Classpath:
+mainClass=Main class:
+editClassPath=Edit item:
+importClassPath=Import attributes from a jar's manifest.
+
+headerType=Header type:
+gui=GUI
+console=Console
+objectFiles=Object files:
+libs=w32api:
+linkerOptions=Custom header - linker options
+
+enableSingleInstance=Allow only a single instance of the application
+mutexName=Mutex name
+mutexNameTip=Mutex name that will uniquely identify your application.
+windowTitle=Window title
+windowTitleTip=Title of the GUI application window to bring up on attempt to start a next instance.
+
+jrePath=Bundled JRE path:
+jrePathTip=Bundled JRE path relative to the executable or absolute.
+jreMin=Min JRE version:
+jreMax=Max JRE version:
+dontUsePrivateJres=Don't use private JREs
+jvmOptions=JVM options:
+jvmOptionsTip=Accepts everything you would normally pass to java/javaw launcher: assertion options, system properties and X options.
+initialHeapSize=Initial heap size:
+maxHeapSize=Max heap size:
+freeMemory=% of free memory
+jdkPreference=JDK/JRE preference:
+addVariables=Add variables:
+addVariablesTip=Add special variable or map environment variables to system properties.
+exeDirVarTip=Executable's runtime directory path.
+exeFileVarTip=Executable's runtime file path (directory and filename).
+varsAndRegistry=Variables / registry:
+envVar=Environment var:
+property=Property
+propertyTip=Map a variable to a system property.
+option=Option
+optionTip=Pass a JVM option using a variable.
+
+setVariables=Set variables:
+
+enableSplash=Enable splash screen
+splashFile=Splash file:
+splashFileTip=Splash screen file in BMP format.
+waitForWindow=Wait for window
+waitForWindowText=Close splash screen when an application window appears
+timeout=Timeout [s]:
+timeoutTip=Number of seconds after which the splash screen must close. Splash timeout may cause an error depending on splashTimeoutErr property.
+timeoutErr=Signal error on timeout
+timeoutErrTip=True signals an error on splash timeout, false closes the splash screen quietly.
+
+version=Version
+additionalInfo=Additional information
+addVersionInfo=Add version information
+fileVersion=File version:
+fileVersionTip=Version number 'x.x.x.x'
+productVersion=Product version:
+productVersionTip=Version number 'x.x.x.x'
+fileDescription=File description:
+fileDescriptionTip=File description presented to the user.
+copyright=Copyright:
+txtFileVersion=Free form:
+txtFileVersionTip=Free form file version, for example '1.20.RC1'.
+txtProductVersion=Free form:
+txtProductVersionTip=Free form product version, for example '1.20.RC1'.
+productName=Product name:
+originalFilename=Original filename:
+originalFilenameTip=Original name of the file without the path. Allows to determine whether a file has been renamed by a user.
+internalName=Internal name:
+internalNameTip=Internal name without extension, original filename or module name for example.
+companyName=Company name:
+
+addMessages=Add custom messages
+startupErr=Startup error:
+bundledJreErr=Bundled JRE error:
+jreVersionErr=JRE version error:
+jreVersionErrTip=Launch4j will append the required version number at the end of this message.
+launcherErr=Launcher error:
+instanceAlreadyExistsMsg=Inst. already exists:
+instanceAlreadyExistsMsgTip=Message displayed by single instance console applications if an instance already exists.
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/form/messages_es.properties b/build/windows/launcher/launch4j/src/net/sf/launch4j/form/messages_es.properties
old mode 100755
new mode 100644
index 50e2d758715..199a26db227
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/form/messages_es.properties
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/form/messages_es.properties
@@ -1,118 +1,118 @@
-#
-# Launch4j (http://launch4j.sourceforge.net/)
-# Cross-platform Java application wrapper for creating Windows native executables.
-#
-# Copyright (c) 2004, 2007 Grzegorz Kowal, Patricio Mart�nez Ros
-#
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without modification,
-# are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-# this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-# this list of conditions and the following disclaimer in the documentation
-# and/or other materials provided with the distribution.
-# * Neither the name of the Launch4j nor the names of its contributors
-# may be used to endorse or promote products derived from this software without
-# specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-
-log = Registro
-
-outfile = Fichero de salida
-outfileTip = Fichero ejecutable de salida.
-errorTitle = T\u00EDtulo de error
-errorTitleTip = Launch4j indica los errores usando una ventana de mensaje, usted puede ponerle el nombre de la aplicaci\u00F3n a esta ventana.
-customProcName = Nombre personalizado del proceso
-stayAlive = Mantener abierto despu\u00E9s de lanzar una aplicaci\u00F3n GUI
-icon = Icono
-iconTip = Icono de la aplicaci\u00F3n.
-jar = Jar
-jarTip = Jar de la aplicaci\u00F3n.
-dontWrapJar = No empaquetar el jar, s\u00F3lo lanzar
-cmdLine = Argumentos del jar
-cmdLine = Argumentos de l\u00EDnea de \u00F3rdenes pasados a la aplicaci\u00F3n.
-options = Opciones
-chdir = Cambiar al directorio
-chdirTip = Cambia el directorio actual a la localizaci\u00F3n relativa al ejecutable. Si el campo se deja vac\u00EDo, no tiene efecto, . - cambia el directorio a la localizaci\u00F3n del exe.
-headerType = Tipo de cabecera
-gui = GUI
-console = Consola
-objectFiles = Ficheros objeto
-libs = w32api
-linkerOptions = Cabecera personalizada - opciones del enlazador
-jrePath = Ruta del JRE
-jrePathTip = Ruta relativa al ejecutable del JRE.
-jreMin = Versi\u00F3n m\u00EDnima del JRE
-jreMax = Versi\u00F3n m\u00E1xima del JRE
-jvmOptions = Argumentos de la JVM
-jvmOptionsTip = Acepta cualquier argumento que normalmente se le pasar\u00EDa al lanzador java/javaw\: opciones assertion, propiedades de sistema y opciones X.
-initialHeapSize = Tama\u00F1o inicial de la pila
-maxHeapSize = Tama\u00F1o m\u00E1ximo de la pila
-freeMemory=% of free memory
-addVariables = A\u00F1adir variables
-addVariablesTip = A\u00F1adir una variable especial o mapear variables de entorno a las propiedades del sistema.
-exeDirVarTip = Ruta del directorio del ejecutable.
-exeFileVarTip = Ruta del fichero ejecutable (directorio y nombre del fichero).
-other = Otra
-otherTip = Mapear una variable de entorno a una propiedad del sistema.
-otherVarTip = Variable de entorno que mapear.
-add = A\u00F1adir
-specifyVar = Especificar variable de entorno que a\u00F1adir.
-enableSplash = Activar pantalla de bienvenida
-splashFile = Imagen
-splashFileTip = Imagen en formato BMP para la pantalla de bienvenida.
-waitForWindow = Esperar la ventana
-waitForWindowText = Cerrar la pantalla de bienvenida cuando aparezca una ventana de la aplicaci\u00F3n
-timeout = Tiempo de espera [s]
-timeoutTip = Numero de segundos despu\u00E9s de los que la pantalla de bienvenida se debe cerrar. Esta propiedad puede causar provocar un error dependiendo de la propiedad splashTimeoutErr.
-timeoutErr = Se\u00F1al de error asociada al tiempo de espera
-timeoutErrTip = Marcado (true) se\u00F1ala un error despu\u00E9s del tiempo de espera de la pantalla de bienvenida, no marcado (false) cierra la pantalla de bienvenida silenciosamente
-addVersionInfo = A\u00F1ade informaci\u00F3n sobre la versi\u00F3n
-fileVersion = Versi\u00F3n del fichero
-fileVersionTip = N\u00FAmero de versi\u00F3n 'x.x.x.x'
-additionalInfo = Informaci\u00F3n adicional
-productVersion = Versi\u00F3n del producto
-productVersionTip = N\u00FAmero de versi\u00F3n 'x.x.x.x'
-fileDescription = Descripci\u00F3n del fichero
-fileDescriptionTip = Descripci\u00F3n del fichero que se le muestra al usuario.
-copyright = Copyright
-txtFileVersion = Forma libre
-txtFileVersionTip = Forma libre de versi\u00F3n, por ejemplo '1.20.RC1'.
-txtProductVersion = Forma libre
-txtProductVersionTip = Forma libre del producto, por ejemplo '1.20.RC1'.
-productName = Nombre del producto
-originalFilename = Nombre original del fichero
-originalFilenameTip = Nombre original del fichero sin la ruta. Permite determinar si un fichero ha sido renombrado por un usuario.
-internalName = Nombre interno
-internalNameTip = Nombre interno sin extensi\u00F3n, el nombre original del fichero o el m\u00F3dulo, por ejemplo.
-companyName = Nombre de la organizaci\u00F3n
-
-addMessages=Add custom messages
-startupErr=Startup error:
-bundledJreErr=Bundled JRE error:
-jreVersionErr=JRE version error:
-jreVersionErrTip=Launch4j will append the required version number at the end of this message.
-launcherErr=Launcher error:
-instanceAlreadyExistsMsg=Inst. already exists:
-instanceAlreadyExistsMsgTip=Message displayed by single instance console applications if an instance already exists.
-
-enableSingleInstance=Allow only a single instance of the application
-mutexName=Mutex name
-mutexNameTip=Mutex name that will uniquely identify your application.
-windowTitle=Window title
-windowTitleTip=Title of the application window to bring up on attempt to start a next instance.
+#
+# Launch4j (http://launch4j.sourceforge.net/)
+# Cross-platform Java application wrapper for creating Windows native executables.
+#
+# Copyright (c) 2004, 2007 Grzegorz Kowal, Patricio Mart�nez Ros
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification,
+# are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Launch4j nor the names of its contributors
+# may be used to endorse or promote products derived from this software without
+# specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+log = Registro
+
+outfile = Fichero de salida
+outfileTip = Fichero ejecutable de salida.
+errorTitle = T\u00EDtulo de error
+errorTitleTip = Launch4j indica los errores usando una ventana de mensaje, usted puede ponerle el nombre de la aplicaci\u00F3n a esta ventana.
+customProcName = Nombre personalizado del proceso
+stayAlive = Mantener abierto despu\u00E9s de lanzar una aplicaci\u00F3n GUI
+icon = Icono
+iconTip = Icono de la aplicaci\u00F3n.
+jar = Jar
+jarTip = Jar de la aplicaci\u00F3n.
+dontWrapJar = No empaquetar el jar, s\u00F3lo lanzar
+cmdLine = Argumentos del jar
+cmdLine = Argumentos de l\u00EDnea de \u00F3rdenes pasados a la aplicaci\u00F3n.
+options = Opciones
+chdir = Cambiar al directorio
+chdirTip = Cambia el directorio actual a la localizaci\u00F3n relativa al ejecutable. Si el campo se deja vac\u00EDo, no tiene efecto, . - cambia el directorio a la localizaci\u00F3n del exe.
+headerType = Tipo de cabecera
+gui = GUI
+console = Consola
+objectFiles = Ficheros objeto
+libs = w32api
+linkerOptions = Cabecera personalizada - opciones del enlazador
+jrePath = Ruta del JRE
+jrePathTip = Ruta relativa al ejecutable del JRE.
+jreMin = Versi\u00F3n m\u00EDnima del JRE
+jreMax = Versi\u00F3n m\u00E1xima del JRE
+jvmOptions = Argumentos de la JVM
+jvmOptionsTip = Acepta cualquier argumento que normalmente se le pasar\u00EDa al lanzador java/javaw\: opciones assertion, propiedades de sistema y opciones X.
+initialHeapSize = Tama\u00F1o inicial de la pila
+maxHeapSize = Tama\u00F1o m\u00E1ximo de la pila
+freeMemory=% of free memory
+addVariables = A\u00F1adir variables
+addVariablesTip = A\u00F1adir una variable especial o mapear variables de entorno a las propiedades del sistema.
+exeDirVarTip = Ruta del directorio del ejecutable.
+exeFileVarTip = Ruta del fichero ejecutable (directorio y nombre del fichero).
+other = Otra
+otherTip = Mapear una variable de entorno a una propiedad del sistema.
+otherVarTip = Variable de entorno que mapear.
+add = A\u00F1adir
+specifyVar = Especificar variable de entorno que a\u00F1adir.
+enableSplash = Activar pantalla de bienvenida
+splashFile = Imagen
+splashFileTip = Imagen en formato BMP para la pantalla de bienvenida.
+waitForWindow = Esperar la ventana
+waitForWindowText = Cerrar la pantalla de bienvenida cuando aparezca una ventana de la aplicaci\u00F3n
+timeout = Tiempo de espera [s]
+timeoutTip = Numero de segundos despu\u00E9s de los que la pantalla de bienvenida se debe cerrar. Esta propiedad puede causar provocar un error dependiendo de la propiedad splashTimeoutErr.
+timeoutErr = Se\u00F1al de error asociada al tiempo de espera
+timeoutErrTip = Marcado (true) se\u00F1ala un error despu\u00E9s del tiempo de espera de la pantalla de bienvenida, no marcado (false) cierra la pantalla de bienvenida silenciosamente
+addVersionInfo = A\u00F1ade informaci\u00F3n sobre la versi\u00F3n
+fileVersion = Versi\u00F3n del fichero
+fileVersionTip = N\u00FAmero de versi\u00F3n 'x.x.x.x'
+additionalInfo = Informaci\u00F3n adicional
+productVersion = Versi\u00F3n del producto
+productVersionTip = N\u00FAmero de versi\u00F3n 'x.x.x.x'
+fileDescription = Descripci\u00F3n del fichero
+fileDescriptionTip = Descripci\u00F3n del fichero que se le muestra al usuario.
+copyright = Copyright
+txtFileVersion = Forma libre
+txtFileVersionTip = Forma libre de versi\u00F3n, por ejemplo '1.20.RC1'.
+txtProductVersion = Forma libre
+txtProductVersionTip = Forma libre del producto, por ejemplo '1.20.RC1'.
+productName = Nombre del producto
+originalFilename = Nombre original del fichero
+originalFilenameTip = Nombre original del fichero sin la ruta. Permite determinar si un fichero ha sido renombrado por un usuario.
+internalName = Nombre interno
+internalNameTip = Nombre interno sin extensi\u00F3n, el nombre original del fichero o el m\u00F3dulo, por ejemplo.
+companyName = Nombre de la organizaci\u00F3n
+
+addMessages=Add custom messages
+startupErr=Startup error:
+bundledJreErr=Bundled JRE error:
+jreVersionErr=JRE version error:
+jreVersionErrTip=Launch4j will append the required version number at the end of this message.
+launcherErr=Launcher error:
+instanceAlreadyExistsMsg=Inst. already exists:
+instanceAlreadyExistsMsgTip=Message displayed by single instance console applications if an instance already exists.
+
+enableSingleInstance=Allow only a single instance of the application
+mutexName=Mutex name
+mutexNameTip=Mutex name that will uniquely identify your application.
+windowTitle=Window title
+windowTitleTip=Title of the application window to bring up on attempt to start a next instance.
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/AbstractAcceptListener.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/AbstractAcceptListener.java
old mode 100755
new mode 100644
index 5265e6436c3..8034fbf2eda
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/AbstractAcceptListener.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/AbstractAcceptListener.java
@@ -1,75 +1,75 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on May 1, 2006
- */
-package net.sf.launch4j.formimpl;
-
-import java.awt.Color;
-import java.awt.event.ActionListener;
-
-import javax.swing.JTextField;
-
-import net.sf.launch4j.binding.Binding;
-
-/**
- * @author Copyright (C) 2006 Grzegorz Kowal
- */
-public abstract class AbstractAcceptListener implements ActionListener {
- final JTextField _field;
-
- public AbstractAcceptListener(JTextField f, boolean listen) {
- _field = f;
- if (listen) {
- _field.addActionListener(this);
- }
- }
-
- protected String getText() {
- return _field.getText();
- }
-
- protected void clear() {
- _field.setText("");
- _field.requestFocusInWindow();
- }
-
- protected void signalViolation(String msg) {
- final Color bg = _field.getBackground();
- _field.setBackground(Binding.INVALID_COLOR);
- MainFrame.getInstance().warn(msg);
- _field.setBackground(bg);
- _field.requestFocusInWindow();
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on May 1, 2006
+ */
+package net.sf.launch4j.formimpl;
+
+import java.awt.Color;
+import java.awt.event.ActionListener;
+
+import javax.swing.JTextField;
+
+import net.sf.launch4j.binding.Binding;
+
+/**
+ * @author Copyright (C) 2006 Grzegorz Kowal
+ */
+public abstract class AbstractAcceptListener implements ActionListener {
+ final JTextField _field;
+
+ public AbstractAcceptListener(JTextField f, boolean listen) {
+ _field = f;
+ if (listen) {
+ _field.addActionListener(this);
+ }
+ }
+
+ protected String getText() {
+ return _field.getText();
+ }
+
+ protected void clear() {
+ _field.setText("");
+ _field.requestFocusInWindow();
+ }
+
+ protected void signalViolation(String msg) {
+ final Color bg = _field.getBackground();
+ _field.setBackground(Binding.INVALID_COLOR);
+ MainFrame.getInstance().warn(msg);
+ _field.setBackground(bg);
+ _field.requestFocusInWindow();
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/BasicFormImpl.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/BasicFormImpl.java
old mode 100755
new mode 100644
index 01ebe8adfb2..2efd8ae0e9e
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/BasicFormImpl.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/BasicFormImpl.java
@@ -1,101 +1,101 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on May 1, 2006
- */
-package net.sf.launch4j.formimpl;
-
-import javax.swing.JFileChooser;
-import javax.swing.JRadioButton;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-
-import net.sf.launch4j.FileChooserFilter;
-import net.sf.launch4j.binding.Bindings;
-import net.sf.launch4j.config.Config;
-import net.sf.launch4j.form.BasicForm;
-
-/**
- * @author Copyright (C) 2006 Grzegorz Kowal
- */
-public class BasicFormImpl extends BasicForm {
-
- public BasicFormImpl(Bindings bindings, JFileChooser fc) {
- bindings.add("outfile", _outfileField)
- .add("dontWrapJar", _dontWrapJarCheck)
- .add("jar", _jarField)
- .add("manifest", _manifestField)
- .add("icon", _iconField)
- .add("cmdLine", _cmdLineField)
- .add("errTitle", _errorTitleField)
- .add("downloadUrl", _downloadUrlField, Config.DOWNLOAD_URL)
- .add("supportUrl", _supportUrlField)
- .add("chdir", _chdirField)
- .add("priorityIndex", new JRadioButton[] { _normalPriorityRadio,
- _idlePriorityRadio,
- _highPriorityRadio })
- .add("customProcName", _customProcNameCheck)
- .add("stayAlive", _stayAliveCheck);
-
- _dontWrapJarCheck.addChangeListener(new DontWrapJarChangeListener());
-
- _outfileButton.addActionListener(new BrowseActionListener(true, fc,
- new FileChooserFilter("Windows executables (.exe)", ".exe"),
- _outfileField));
- _jarButton.addActionListener(new BrowseActionListener(false, fc,
- new FileChooserFilter("Jar files", ".jar"), _jarField));
- _manifestButton.addActionListener(new BrowseActionListener(false, fc,
- new FileChooserFilter("Manifest files (.manifest)", ".manifest"),
- _manifestField));
- _iconButton.addActionListener(new BrowseActionListener(false, fc,
- new FileChooserFilter("Icon files (.ico)", ".ico"), _iconField));
- }
-
- private class DontWrapJarChangeListener implements ChangeListener {
-
- public void stateChanged(ChangeEvent e) {
- boolean dontWrap = _dontWrapJarCheck.isSelected();
- if (dontWrap) {
- _jarLabel.setIcon(loadImage("images/asterix-o.gif"));
- _jarLabel.setText(Messages.getString("jarPath"));
- _jarField.setToolTipText(Messages.getString("jarPathTip"));
- } else {
- _jarLabel.setIcon(loadImage("images/asterix.gif"));
- _jarLabel.setText(Messages.getString("jar"));
- _jarField.setToolTipText(Messages.getString("jarTip"));
- }
- _jarButton.setEnabled(!dontWrap);
- }
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on May 1, 2006
+ */
+package net.sf.launch4j.formimpl;
+
+import javax.swing.JFileChooser;
+import javax.swing.JRadioButton;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+import net.sf.launch4j.FileChooserFilter;
+import net.sf.launch4j.binding.Bindings;
+import net.sf.launch4j.config.Config;
+import net.sf.launch4j.form.BasicForm;
+
+/**
+ * @author Copyright (C) 2006 Grzegorz Kowal
+ */
+public class BasicFormImpl extends BasicForm {
+
+ public BasicFormImpl(Bindings bindings, JFileChooser fc) {
+ bindings.add("outfile", _outfileField)
+ .add("dontWrapJar", _dontWrapJarCheck)
+ .add("jar", _jarField)
+ .add("manifest", _manifestField)
+ .add("icon", _iconField)
+ .add("cmdLine", _cmdLineField)
+ .add("errTitle", _errorTitleField)
+ .add("downloadUrl", _downloadUrlField, Config.DOWNLOAD_URL)
+ .add("supportUrl", _supportUrlField)
+ .add("chdir", _chdirField)
+ .add("priorityIndex", new JRadioButton[] { _normalPriorityRadio,
+ _idlePriorityRadio,
+ _highPriorityRadio })
+ .add("customProcName", _customProcNameCheck)
+ .add("stayAlive", _stayAliveCheck);
+
+ _dontWrapJarCheck.addChangeListener(new DontWrapJarChangeListener());
+
+ _outfileButton.addActionListener(new BrowseActionListener(true, fc,
+ new FileChooserFilter("Windows executables (.exe)", ".exe"),
+ _outfileField));
+ _jarButton.addActionListener(new BrowseActionListener(false, fc,
+ new FileChooserFilter("Jar files", ".jar"), _jarField));
+ _manifestButton.addActionListener(new BrowseActionListener(false, fc,
+ new FileChooserFilter("Manifest files (.manifest)", ".manifest"),
+ _manifestField));
+ _iconButton.addActionListener(new BrowseActionListener(false, fc,
+ new FileChooserFilter("Icon files (.ico)", ".ico"), _iconField));
+ }
+
+ private class DontWrapJarChangeListener implements ChangeListener {
+
+ public void stateChanged(ChangeEvent e) {
+ boolean dontWrap = _dontWrapJarCheck.isSelected();
+ if (dontWrap) {
+ _jarLabel.setIcon(loadImage("images/asterix-o.gif"));
+ _jarLabel.setText(Messages.getString("jarPath"));
+ _jarField.setToolTipText(Messages.getString("jarPathTip"));
+ } else {
+ _jarLabel.setIcon(loadImage("images/asterix.gif"));
+ _jarLabel.setText(Messages.getString("jar"));
+ _jarField.setToolTipText(Messages.getString("jarTip"));
+ }
+ _jarButton.setEnabled(!dontWrap);
+ }
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/BrowseActionListener.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/BrowseActionListener.java
old mode 100755
new mode 100644
index 89a5017ee23..a13bda66d84
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/BrowseActionListener.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/BrowseActionListener.java
@@ -1,79 +1,79 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on May 1, 2006
- */
-package net.sf.launch4j.formimpl;
-
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.io.File;
-
-import javax.swing.JFileChooser;
-import javax.swing.JTextField;
-
-import net.sf.launch4j.FileChooserFilter;
-
-/**
- * @author Copyright (C) 2006 Grzegorz Kowal
- */
-public class BrowseActionListener implements ActionListener {
- private final boolean _save;
- private final JFileChooser _fileChooser;
- private final FileChooserFilter _filter;
- private final JTextField _field;
-
- public BrowseActionListener(boolean save, JFileChooser fileChooser,
- FileChooserFilter filter, JTextField field) {
- _save = save;
- _fileChooser = fileChooser;
- _filter = filter;
- _field = field;
- }
-
- public void actionPerformed(ActionEvent e) {
- if (!_field.isEnabled()) {
- return;
- }
- _fileChooser.setFileFilter(_filter);
- _fileChooser.setSelectedFile(new File(""));
- int result = _save
- ? _fileChooser.showSaveDialog(MainFrame.getInstance())
- : _fileChooser.showOpenDialog(MainFrame.getInstance());
- if (result == JFileChooser.APPROVE_OPTION) {
- _field.setText(_fileChooser.getSelectedFile().getPath());
- }
- _fileChooser.removeChoosableFileFilter(_filter);
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on May 1, 2006
+ */
+package net.sf.launch4j.formimpl;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+
+import javax.swing.JFileChooser;
+import javax.swing.JTextField;
+
+import net.sf.launch4j.FileChooserFilter;
+
+/**
+ * @author Copyright (C) 2006 Grzegorz Kowal
+ */
+public class BrowseActionListener implements ActionListener {
+ private final boolean _save;
+ private final JFileChooser _fileChooser;
+ private final FileChooserFilter _filter;
+ private final JTextField _field;
+
+ public BrowseActionListener(boolean save, JFileChooser fileChooser,
+ FileChooserFilter filter, JTextField field) {
+ _save = save;
+ _fileChooser = fileChooser;
+ _filter = filter;
+ _field = field;
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ if (!_field.isEnabled()) {
+ return;
+ }
+ _fileChooser.setFileFilter(_filter);
+ _fileChooser.setSelectedFile(new File(""));
+ int result = _save
+ ? _fileChooser.showSaveDialog(MainFrame.getInstance())
+ : _fileChooser.showOpenDialog(MainFrame.getInstance());
+ if (result == JFileChooser.APPROVE_OPTION) {
+ _field.setText(_fileChooser.getSelectedFile().getPath());
+ }
+ _fileChooser.removeChoosableFileFilter(_filter);
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/ClassPathFormImpl.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/ClassPathFormImpl.java
old mode 100755
new mode 100644
index 65d82096ee3..8bdff451029
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/ClassPathFormImpl.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/ClassPathFormImpl.java
@@ -1,222 +1,222 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on May 1, 2006
- */
-package net.sf.launch4j.formimpl;
-
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.io.File;
-import java.io.IOException;
-import java.util.jar.Attributes;
-import java.util.jar.JarFile;
-
-import javax.swing.DefaultListModel;
-import javax.swing.JFileChooser;
-import javax.swing.JTextField;
-import javax.swing.ListSelectionModel;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
-
-import net.sf.launch4j.FileChooserFilter;
-import net.sf.launch4j.binding.Bindings;
-import net.sf.launch4j.binding.Validator;
-import net.sf.launch4j.config.ClassPath;
-import net.sf.launch4j.form.ClassPathForm;
-
-/**
- * @author Copyright (C) 2006 Grzegorz Kowal
- */
-public class ClassPathFormImpl extends ClassPathForm {
- private final JFileChooser _fileChooser;
- private final FileChooserFilter _filter
- = new FileChooserFilter("Executable jar", ".jar");
-
- public ClassPathFormImpl(Bindings bindings, JFileChooser fc) {
- bindings.addOptComponent("classPath", ClassPath.class, _classpathCheck)
- .add("classPath.mainClass", _mainclassField)
- .add("classPath.paths", _classpathList);
- _fileChooser = fc;
-
- ClasspathCheckListener cpl = new ClasspathCheckListener();
- _classpathCheck.addChangeListener(cpl);
- cpl.stateChanged(null);
-
- _classpathList.setModel(new DefaultListModel());
- _classpathList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
- _classpathList.addListSelectionListener(new ClasspathSelectionListener());
-
- _newClasspathButton.addActionListener(new NewClasspathListener());
- _acceptClasspathButton.addActionListener(
- new AcceptClasspathListener(_classpathField));
- _removeClasspathButton.addActionListener(new RemoveClasspathListener());
- _importClasspathButton.addActionListener(new ImportClasspathListener());
- _classpathUpButton.addActionListener(new MoveUpListener());
- _classpathDownButton.addActionListener(new MoveDownListener());
- }
-
- private class ClasspathCheckListener implements ChangeListener {
- public void stateChanged(ChangeEvent e) {
- boolean on = _classpathCheck.isSelected();
- _importClasspathButton.setEnabled(on);
- _classpathUpButton.setEnabled(on);
- _classpathDownButton.setEnabled(on);
- _classpathField.setEnabled(on);
- _newClasspathButton.setEnabled(on);
- _acceptClasspathButton.setEnabled(on);
- _removeClasspathButton.setEnabled(on);
- }
- }
-
- private class NewClasspathListener implements ActionListener {
- public void actionPerformed(ActionEvent e) {
- _classpathList.clearSelection();
- _classpathField.setText("");
- _classpathField.requestFocusInWindow();
- }
- }
-
- private class AcceptClasspathListener extends AbstractAcceptListener {
- public AcceptClasspathListener(JTextField f) {
- super(f, true);
- }
-
- public void actionPerformed(ActionEvent e) {
- String cp = getText();
- if (Validator.isEmpty(cp)) {
- signalViolation(Messages.getString("specifyClassPath"));
- return;
- }
- DefaultListModel model = (DefaultListModel) _classpathList.getModel();
- if (_classpathList.isSelectionEmpty()) {
- model.addElement(cp);
- clear();
- } else {
- model.setElementAt(cp, _classpathList.getSelectedIndex());
- }
- }
- }
-
- private class ClasspathSelectionListener implements ListSelectionListener {
- public void valueChanged(ListSelectionEvent e) {
- if (e.getValueIsAdjusting()) {
- return;
- }
- if (_classpathList.isSelectionEmpty()) {
- _classpathField.setText("");
- } else {
- _classpathField.setText((String) _classpathList.getSelectedValue());
- }
- _classpathField.requestFocusInWindow();
- }
- }
-
- private class RemoveClasspathListener implements ActionListener {
- public void actionPerformed(ActionEvent e) {
- if (_classpathList.isSelectionEmpty()
- || !MainFrame.getInstance().confirm(
- Messages.getString("confirmClassPathRemoval"))) {
- return;
- }
- DefaultListModel model = (DefaultListModel) _classpathList.getModel();
- while (!_classpathList.isSelectionEmpty()) {
- model.remove(_classpathList.getSelectedIndex());
- }
- }
- }
-
- private class MoveUpListener implements ActionListener {
- public void actionPerformed(ActionEvent e) {
- int x = _classpathList.getSelectedIndex();
- if (x < 1) {
- return;
- }
- DefaultListModel model = (DefaultListModel) _classpathList.getModel();
- Object o = model.get(x - 1);
- model.set(x - 1, model.get(x));
- model.set(x, o);
- _classpathList.setSelectedIndex(x - 1);
- }
- }
-
- private class MoveDownListener implements ActionListener {
- public void actionPerformed(ActionEvent e) {
- DefaultListModel model = (DefaultListModel) _classpathList.getModel();
- int x = _classpathList.getSelectedIndex();
- if (x == -1 || x >= model.getSize() - 1) {
- return;
- }
- Object o = model.get(x + 1);
- model.set(x + 1, model.get(x));
- model.set(x, o);
- _classpathList.setSelectedIndex(x + 1);
- }
- }
-
- private class ImportClasspathListener implements ActionListener {
- public void actionPerformed(ActionEvent e) {
- try {
- _fileChooser.setFileFilter(_filter);
- _fileChooser.setSelectedFile(new File(""));
- if (_fileChooser.showOpenDialog(MainFrame.getInstance())
- == JFileChooser.APPROVE_OPTION) {
- JarFile jar = new JarFile(_fileChooser.getSelectedFile());
- if (jar.getManifest() == null) {
- jar.close();
- MainFrame.getInstance().info(Messages.getString("noManifest"));
- return;
- }
- Attributes attr = jar.getManifest().getMainAttributes();
- String mainClass = (String) attr.getValue("Main-Class");
- String classPath = (String) attr.getValue("Class-Path");
- jar.close();
- _mainclassField.setText(mainClass != null ? mainClass : "");
- DefaultListModel model = new DefaultListModel();
- if (classPath != null) {
- String[] paths = classPath.split(" ");
- for (int i = 0; i < paths.length; i++) {
- model.addElement(paths[i]);
- }
- }
- _classpathList.setModel(model);
- }
- } catch (IOException ex) {
- MainFrame.getInstance().warn(ex.getMessage());
- }
- }
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on May 1, 2006
+ */
+package net.sf.launch4j.formimpl;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+import java.io.IOException;
+import java.util.jar.Attributes;
+import java.util.jar.JarFile;
+
+import javax.swing.DefaultListModel;
+import javax.swing.JFileChooser;
+import javax.swing.JTextField;
+import javax.swing.ListSelectionModel;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+import net.sf.launch4j.FileChooserFilter;
+import net.sf.launch4j.binding.Bindings;
+import net.sf.launch4j.binding.Validator;
+import net.sf.launch4j.config.ClassPath;
+import net.sf.launch4j.form.ClassPathForm;
+
+/**
+ * @author Copyright (C) 2006 Grzegorz Kowal
+ */
+public class ClassPathFormImpl extends ClassPathForm {
+ private final JFileChooser _fileChooser;
+ private final FileChooserFilter _filter
+ = new FileChooserFilter("Executable jar", ".jar");
+
+ public ClassPathFormImpl(Bindings bindings, JFileChooser fc) {
+ bindings.addOptComponent("classPath", ClassPath.class, _classpathCheck)
+ .add("classPath.mainClass", _mainclassField)
+ .add("classPath.paths", _classpathList);
+ _fileChooser = fc;
+
+ ClasspathCheckListener cpl = new ClasspathCheckListener();
+ _classpathCheck.addChangeListener(cpl);
+ cpl.stateChanged(null);
+
+ _classpathList.setModel(new DefaultListModel());
+ _classpathList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ _classpathList.addListSelectionListener(new ClasspathSelectionListener());
+
+ _newClasspathButton.addActionListener(new NewClasspathListener());
+ _acceptClasspathButton.addActionListener(
+ new AcceptClasspathListener(_classpathField));
+ _removeClasspathButton.addActionListener(new RemoveClasspathListener());
+ _importClasspathButton.addActionListener(new ImportClasspathListener());
+ _classpathUpButton.addActionListener(new MoveUpListener());
+ _classpathDownButton.addActionListener(new MoveDownListener());
+ }
+
+ private class ClasspathCheckListener implements ChangeListener {
+ public void stateChanged(ChangeEvent e) {
+ boolean on = _classpathCheck.isSelected();
+ _importClasspathButton.setEnabled(on);
+ _classpathUpButton.setEnabled(on);
+ _classpathDownButton.setEnabled(on);
+ _classpathField.setEnabled(on);
+ _newClasspathButton.setEnabled(on);
+ _acceptClasspathButton.setEnabled(on);
+ _removeClasspathButton.setEnabled(on);
+ }
+ }
+
+ private class NewClasspathListener implements ActionListener {
+ public void actionPerformed(ActionEvent e) {
+ _classpathList.clearSelection();
+ _classpathField.setText("");
+ _classpathField.requestFocusInWindow();
+ }
+ }
+
+ private class AcceptClasspathListener extends AbstractAcceptListener {
+ public AcceptClasspathListener(JTextField f) {
+ super(f, true);
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ String cp = getText();
+ if (Validator.isEmpty(cp)) {
+ signalViolation(Messages.getString("specifyClassPath"));
+ return;
+ }
+ DefaultListModel model = (DefaultListModel) _classpathList.getModel();
+ if (_classpathList.isSelectionEmpty()) {
+ model.addElement(cp);
+ clear();
+ } else {
+ model.setElementAt(cp, _classpathList.getSelectedIndex());
+ }
+ }
+ }
+
+ private class ClasspathSelectionListener implements ListSelectionListener {
+ public void valueChanged(ListSelectionEvent e) {
+ if (e.getValueIsAdjusting()) {
+ return;
+ }
+ if (_classpathList.isSelectionEmpty()) {
+ _classpathField.setText("");
+ } else {
+ _classpathField.setText((String) _classpathList.getSelectedValue());
+ }
+ _classpathField.requestFocusInWindow();
+ }
+ }
+
+ private class RemoveClasspathListener implements ActionListener {
+ public void actionPerformed(ActionEvent e) {
+ if (_classpathList.isSelectionEmpty()
+ || !MainFrame.getInstance().confirm(
+ Messages.getString("confirmClassPathRemoval"))) {
+ return;
+ }
+ DefaultListModel model = (DefaultListModel) _classpathList.getModel();
+ while (!_classpathList.isSelectionEmpty()) {
+ model.remove(_classpathList.getSelectedIndex());
+ }
+ }
+ }
+
+ private class MoveUpListener implements ActionListener {
+ public void actionPerformed(ActionEvent e) {
+ int x = _classpathList.getSelectedIndex();
+ if (x < 1) {
+ return;
+ }
+ DefaultListModel model = (DefaultListModel) _classpathList.getModel();
+ Object o = model.get(x - 1);
+ model.set(x - 1, model.get(x));
+ model.set(x, o);
+ _classpathList.setSelectedIndex(x - 1);
+ }
+ }
+
+ private class MoveDownListener implements ActionListener {
+ public void actionPerformed(ActionEvent e) {
+ DefaultListModel model = (DefaultListModel) _classpathList.getModel();
+ int x = _classpathList.getSelectedIndex();
+ if (x == -1 || x >= model.getSize() - 1) {
+ return;
+ }
+ Object o = model.get(x + 1);
+ model.set(x + 1, model.get(x));
+ model.set(x, o);
+ _classpathList.setSelectedIndex(x + 1);
+ }
+ }
+
+ private class ImportClasspathListener implements ActionListener {
+ public void actionPerformed(ActionEvent e) {
+ try {
+ _fileChooser.setFileFilter(_filter);
+ _fileChooser.setSelectedFile(new File(""));
+ if (_fileChooser.showOpenDialog(MainFrame.getInstance())
+ == JFileChooser.APPROVE_OPTION) {
+ JarFile jar = new JarFile(_fileChooser.getSelectedFile());
+ if (jar.getManifest() == null) {
+ jar.close();
+ MainFrame.getInstance().info(Messages.getString("noManifest"));
+ return;
+ }
+ Attributes attr = jar.getManifest().getMainAttributes();
+ String mainClass = (String) attr.getValue("Main-Class");
+ String classPath = (String) attr.getValue("Class-Path");
+ jar.close();
+ _mainclassField.setText(mainClass != null ? mainClass : "");
+ DefaultListModel model = new DefaultListModel();
+ if (classPath != null) {
+ String[] paths = classPath.split(" ");
+ for (int i = 0; i < paths.length; i++) {
+ model.addElement(paths[i]);
+ }
+ }
+ _classpathList.setModel(model);
+ }
+ } catch (IOException ex) {
+ MainFrame.getInstance().warn(ex.getMessage());
+ }
+ }
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/ConfigFormImpl.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/ConfigFormImpl.java
old mode 100755
new mode 100644
index d29720642b5..cb618494161
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/ConfigFormImpl.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/ConfigFormImpl.java
@@ -1,100 +1,100 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on May 10, 2005
- */
-package net.sf.launch4j.formimpl;
-
-import javax.swing.BorderFactory;
-import javax.swing.JFileChooser;
-import javax.swing.JTextArea;
-
-import net.sf.launch4j.binding.Binding;
-import net.sf.launch4j.binding.Bindings;
-import net.sf.launch4j.binding.IValidatable;
-import net.sf.launch4j.form.ConfigForm;
-
-/**
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public class ConfigFormImpl extends ConfigForm {
- private final Bindings _bindings = new Bindings();
- private final JFileChooser _fileChooser = new FileChooser(ConfigFormImpl.class);
-
- public ConfigFormImpl() {
- _tab.setBorder(BorderFactory.createMatteBorder(0, -1, -1, -1, getBackground()));
- _tab.addTab(Messages.getString("tab.basic"),
- new BasicFormImpl(_bindings, _fileChooser));
- _tab.addTab(Messages.getString("tab.classpath"),
- new ClassPathFormImpl(_bindings, _fileChooser));
- _tab.addTab(Messages.getString("tab.header"),
- new HeaderFormImpl(_bindings));
- _tab.addTab(Messages.getString("tab.singleInstance"),
- new SingleInstanceFormImpl(_bindings));
- _tab.addTab(Messages.getString("tab.jre"),
- new JreFormImpl(_bindings, _fileChooser));
- _tab.addTab(Messages.getString("tab.envVars"),
- new EnvironmentVarsFormImpl(_bindings));
- _tab.addTab(Messages.getString("tab.splash"),
- new SplashFormImpl(_bindings, _fileChooser));
- _tab.addTab(Messages.getString("tab.version"),
- new VersionInfoFormImpl(_bindings, _fileChooser));
- _tab.addTab(Messages.getString("tab.messages"),
- new MessagesFormImpl(_bindings));
- }
-
- public void clear(IValidatable bean) {
- _bindings.clear(bean);
- }
-
- public void put(IValidatable bean) {
- _bindings.put(bean);
- }
-
- public void get(IValidatable bean) {
- _bindings.get(bean);
- }
-
- public boolean isModified() {
- return _bindings.isModified();
- }
-
- public JTextArea getLogTextArea() {
- return _logTextArea;
- }
-
- public Binding getBinding(String property) {
- return _bindings.getBinding(property);
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on May 10, 2005
+ */
+package net.sf.launch4j.formimpl;
+
+import javax.swing.BorderFactory;
+import javax.swing.JFileChooser;
+import javax.swing.JTextArea;
+
+import net.sf.launch4j.binding.Binding;
+import net.sf.launch4j.binding.Bindings;
+import net.sf.launch4j.binding.IValidatable;
+import net.sf.launch4j.form.ConfigForm;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class ConfigFormImpl extends ConfigForm {
+ private final Bindings _bindings = new Bindings();
+ private final JFileChooser _fileChooser = new FileChooser(ConfigFormImpl.class);
+
+ public ConfigFormImpl() {
+ _tab.setBorder(BorderFactory.createMatteBorder(0, -1, -1, -1, getBackground()));
+ _tab.addTab(Messages.getString("tab.basic"),
+ new BasicFormImpl(_bindings, _fileChooser));
+ _tab.addTab(Messages.getString("tab.classpath"),
+ new ClassPathFormImpl(_bindings, _fileChooser));
+ _tab.addTab(Messages.getString("tab.header"),
+ new HeaderFormImpl(_bindings));
+ _tab.addTab(Messages.getString("tab.singleInstance"),
+ new SingleInstanceFormImpl(_bindings));
+ _tab.addTab(Messages.getString("tab.jre"),
+ new JreFormImpl(_bindings, _fileChooser));
+ _tab.addTab(Messages.getString("tab.envVars"),
+ new EnvironmentVarsFormImpl(_bindings));
+ _tab.addTab(Messages.getString("tab.splash"),
+ new SplashFormImpl(_bindings, _fileChooser));
+ _tab.addTab(Messages.getString("tab.version"),
+ new VersionInfoFormImpl(_bindings, _fileChooser));
+ _tab.addTab(Messages.getString("tab.messages"),
+ new MessagesFormImpl(_bindings));
+ }
+
+ public void clear(IValidatable bean) {
+ _bindings.clear(bean);
+ }
+
+ public void put(IValidatable bean) {
+ _bindings.put(bean);
+ }
+
+ public void get(IValidatable bean) {
+ _bindings.get(bean);
+ }
+
+ public boolean isModified() {
+ return _bindings.isModified();
+ }
+
+ public JTextArea getLogTextArea() {
+ return _logTextArea;
+ }
+
+ public Binding getBinding(String property) {
+ return _bindings.getBinding(property);
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/EnvironmentVarsFormImpl.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/EnvironmentVarsFormImpl.java
old mode 100755
new mode 100644
index 2f325fe3cf9..d6553b0e94a
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/EnvironmentVarsFormImpl.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/EnvironmentVarsFormImpl.java
@@ -1,50 +1,50 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on Jun 10, 2006
- */
-package net.sf.launch4j.formimpl;
-
-import net.sf.launch4j.binding.Bindings;
-import net.sf.launch4j.form.EnvironmentVarsForm;
-
-/**
- * @author Copyright (C) 2006 Grzegorz Kowal
- */
-public class EnvironmentVarsFormImpl extends EnvironmentVarsForm {
-
- public EnvironmentVarsFormImpl(Bindings bindings) {
- bindings.add("variables", _envVarsTextArea);
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on Jun 10, 2006
+ */
+package net.sf.launch4j.formimpl;
+
+import net.sf.launch4j.binding.Bindings;
+import net.sf.launch4j.form.EnvironmentVarsForm;
+
+/**
+ * @author Copyright (C) 2006 Grzegorz Kowal
+ */
+public class EnvironmentVarsFormImpl extends EnvironmentVarsForm {
+
+ public EnvironmentVarsFormImpl(Bindings bindings) {
+ bindings.add("variables", _envVarsTextArea);
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/FileChooser.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/FileChooser.java
old mode 100755
new mode 100644
index c1b984e5878..5cc1c125095
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/FileChooser.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/FileChooser.java
@@ -1,65 +1,65 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on Jul 19, 2006
- */
-package net.sf.launch4j.formimpl;
-
-import java.io.File;
-import java.util.prefs.Preferences;
-
-import javax.swing.JFileChooser;
-
-/**
- * @author Copyright (C) 2006 Grzegorz Kowal
- */
-public class FileChooser extends JFileChooser {
- private final Preferences _prefs;
- private final String _key;
-
- public FileChooser(Class clazz) {
- _prefs = Preferences.userNodeForPackage(clazz);
- _key = "currentDir-"
- + clazz.getName().substring(clazz.getName().lastIndexOf('.') + 1);
- String path = _prefs.get(_key, null);
- if (path != null) {
- setCurrentDirectory(new File(path));
- }
- }
-
- public void approveSelection() {
- _prefs.put(_key, getCurrentDirectory().getPath());
- super.approveSelection();
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on Jul 19, 2006
+ */
+package net.sf.launch4j.formimpl;
+
+import java.io.File;
+import java.util.prefs.Preferences;
+
+import javax.swing.JFileChooser;
+
+/**
+ * @author Copyright (C) 2006 Grzegorz Kowal
+ */
+public class FileChooser extends JFileChooser {
+ private final Preferences _prefs;
+ private final String _key;
+
+ public FileChooser(Class clazz) {
+ _prefs = Preferences.userNodeForPackage(clazz);
+ _key = "currentDir-"
+ + clazz.getName().substring(clazz.getName().lastIndexOf('.') + 1);
+ String path = _prefs.get(_key, null);
+ if (path != null) {
+ setCurrentDirectory(new File(path));
+ }
+ }
+
+ public void approveSelection() {
+ _prefs.put(_key, getCurrentDirectory().getPath());
+ super.approveSelection();
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/GlassPane.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/GlassPane.java
old mode 100755
new mode 100644
index c1b1d8dd4f0..46126740ab9
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/GlassPane.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/GlassPane.java
@@ -1,67 +1,67 @@
-package net.sf.launch4j.formimpl;
-
-import java.awt.AWTEvent;
-import java.awt.Component;
-import java.awt.Cursor;
-import java.awt.Toolkit;
-import java.awt.Window;
-import java.awt.event.AWTEventListener;
-import java.awt.event.KeyAdapter;
-import java.awt.event.KeyEvent;
-import java.awt.event.MouseAdapter;
-
-import javax.swing.JComponent;
-import javax.swing.SwingUtilities;
-
-/**
- * This is the glass pane class that intercepts screen interactions during
- * system busy states.
- *
- * Based on JavaWorld article by Yexin Chen.
- */
-public class GlassPane extends JComponent implements AWTEventListener {
- private final Window _window;
-
- public GlassPane(Window w) {
- _window = w;
- addMouseListener(new MouseAdapter() {});
- addKeyListener(new KeyAdapter() {});
- setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
- }
-
- /**
- * Receives all key events in the AWT and processes the ones that originated
- * from the current window with the glass pane.
- *
- * @param event
- * the AWTEvent that was fired
- */
- public void eventDispatched(AWTEvent event) {
- Object source = event.getSource();
- if (event instanceof KeyEvent
- && source instanceof Component) {
- /*
- * If the event originated from the window w/glass pane,
- * consume the event.
- */
- if ((SwingUtilities.windowForComponent((Component) source) == _window)) {
- ((KeyEvent) event).consume();
- }
- }
- }
-
- /**
- * Sets the glass pane as visible or invisible. The mouse cursor will be set
- * accordingly.
- */
- public void setVisible(boolean visible) {
- if (visible) {
- // Start receiving all events and consume them if necessary
- Toolkit.getDefaultToolkit().addAWTEventListener(this, AWTEvent.KEY_EVENT_MASK);
- } else {
- // Stop receiving all events
- Toolkit.getDefaultToolkit().removeAWTEventListener(this);
- }
- super.setVisible(visible);
- }
-}
+package net.sf.launch4j.formimpl;
+
+import java.awt.AWTEvent;
+import java.awt.Component;
+import java.awt.Cursor;
+import java.awt.Toolkit;
+import java.awt.Window;
+import java.awt.event.AWTEventListener;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseAdapter;
+
+import javax.swing.JComponent;
+import javax.swing.SwingUtilities;
+
+/**
+ * This is the glass pane class that intercepts screen interactions during
+ * system busy states.
+ *
+ * Based on JavaWorld article by Yexin Chen.
+ */
+public class GlassPane extends JComponent implements AWTEventListener {
+ private final Window _window;
+
+ public GlassPane(Window w) {
+ _window = w;
+ addMouseListener(new MouseAdapter() {});
+ addKeyListener(new KeyAdapter() {});
+ setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
+ }
+
+ /**
+ * Receives all key events in the AWT and processes the ones that originated
+ * from the current window with the glass pane.
+ *
+ * @param event
+ * the AWTEvent that was fired
+ */
+ public void eventDispatched(AWTEvent event) {
+ Object source = event.getSource();
+ if (event instanceof KeyEvent
+ && source instanceof Component) {
+ /*
+ * If the event originated from the window w/glass pane,
+ * consume the event.
+ */
+ if ((SwingUtilities.windowForComponent((Component) source) == _window)) {
+ ((KeyEvent) event).consume();
+ }
+ }
+ }
+
+ /**
+ * Sets the glass pane as visible or invisible. The mouse cursor will be set
+ * accordingly.
+ */
+ public void setVisible(boolean visible) {
+ if (visible) {
+ // Start receiving all events and consume them if necessary
+ Toolkit.getDefaultToolkit().addAWTEventListener(this, AWTEvent.KEY_EVENT_MASK);
+ } else {
+ // Stop receiving all events
+ Toolkit.getDefaultToolkit().removeAWTEventListener(this);
+ }
+ super.setVisible(visible);
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/HeaderFormImpl.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/HeaderFormImpl.java
old mode 100755
new mode 100644
index accfaa9de50..739bf52537b
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/HeaderFormImpl.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/HeaderFormImpl.java
@@ -1,102 +1,102 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on May 1, 2006
- */
-package net.sf.launch4j.formimpl;
-
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-
-import javax.swing.JRadioButton;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-
-import net.sf.launch4j.binding.Binding;
-import net.sf.launch4j.binding.Bindings;
-import net.sf.launch4j.config.Config;
-import net.sf.launch4j.config.ConfigPersister;
-import net.sf.launch4j.form.HeaderForm;
-
-/**
- * @author Copyright (C) 2006 Grzegorz Kowal
- */
-public class HeaderFormImpl extends HeaderForm {
- private final Bindings _bindings;
-
- public HeaderFormImpl(Bindings bindings) {
- _bindings = bindings;
- _bindings.add("headerTypeIndex", new JRadioButton[] { _guiHeaderRadio,
- _consoleHeaderRadio })
- .add("headerObjects", "customHeaderObjects", _headerObjectsCheck,
- _headerObjectsTextArea)
- .add("libs", "customLibs", _libsCheck, _libsTextArea);
-
- _guiHeaderRadio.addChangeListener(new HeaderTypeChangeListener());
- _headerObjectsCheck.addActionListener(new HeaderObjectsActionListener());
- _libsCheck.addActionListener(new LibsActionListener());
- }
-
- private class HeaderTypeChangeListener implements ChangeListener {
- public void stateChanged(ChangeEvent e) {
- Config c = ConfigPersister.getInstance().getConfig();
- c.setHeaderType(_guiHeaderRadio.isSelected() ? Config.GUI_HEADER
- : Config.CONSOLE_HEADER);
- if (!_headerObjectsCheck.isSelected()) {
- Binding b = _bindings.getBinding("headerObjects");
- b.put(c);
- }
- }
- }
-
- private class HeaderObjectsActionListener implements ActionListener {
- public void actionPerformed(ActionEvent e) {
- if (!_headerObjectsCheck.isSelected()) {
- ConfigPersister.getInstance().getConfig().setHeaderObjects(null);
- Binding b = _bindings.getBinding("headerObjects");
- b.put(ConfigPersister.getInstance().getConfig());
- }
- }
- }
-
- private class LibsActionListener implements ActionListener {
- public void actionPerformed(ActionEvent e) {
- if (!_libsCheck.isSelected()) {
- ConfigPersister.getInstance().getConfig().setLibs(null);
- Binding b = _bindings.getBinding("libs");
- b.put(ConfigPersister.getInstance().getConfig());
- }
- }
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on May 1, 2006
+ */
+package net.sf.launch4j.formimpl;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JRadioButton;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+import net.sf.launch4j.binding.Binding;
+import net.sf.launch4j.binding.Bindings;
+import net.sf.launch4j.config.Config;
+import net.sf.launch4j.config.ConfigPersister;
+import net.sf.launch4j.form.HeaderForm;
+
+/**
+ * @author Copyright (C) 2006 Grzegorz Kowal
+ */
+public class HeaderFormImpl extends HeaderForm {
+ private final Bindings _bindings;
+
+ public HeaderFormImpl(Bindings bindings) {
+ _bindings = bindings;
+ _bindings.add("headerTypeIndex", new JRadioButton[] { _guiHeaderRadio,
+ _consoleHeaderRadio })
+ .add("headerObjects", "customHeaderObjects", _headerObjectsCheck,
+ _headerObjectsTextArea)
+ .add("libs", "customLibs", _libsCheck, _libsTextArea);
+
+ _guiHeaderRadio.addChangeListener(new HeaderTypeChangeListener());
+ _headerObjectsCheck.addActionListener(new HeaderObjectsActionListener());
+ _libsCheck.addActionListener(new LibsActionListener());
+ }
+
+ private class HeaderTypeChangeListener implements ChangeListener {
+ public void stateChanged(ChangeEvent e) {
+ Config c = ConfigPersister.getInstance().getConfig();
+ c.setHeaderType(_guiHeaderRadio.isSelected() ? Config.GUI_HEADER
+ : Config.CONSOLE_HEADER);
+ if (!_headerObjectsCheck.isSelected()) {
+ Binding b = _bindings.getBinding("headerObjects");
+ b.put(c);
+ }
+ }
+ }
+
+ private class HeaderObjectsActionListener implements ActionListener {
+ public void actionPerformed(ActionEvent e) {
+ if (!_headerObjectsCheck.isSelected()) {
+ ConfigPersister.getInstance().getConfig().setHeaderObjects(null);
+ Binding b = _bindings.getBinding("headerObjects");
+ b.put(ConfigPersister.getInstance().getConfig());
+ }
+ }
+ }
+
+ private class LibsActionListener implements ActionListener {
+ public void actionPerformed(ActionEvent e) {
+ if (!_libsCheck.isSelected()) {
+ ConfigPersister.getInstance().getConfig().setLibs(null);
+ Binding b = _bindings.getBinding("libs");
+ b.put(ConfigPersister.getInstance().getConfig());
+ }
+ }
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/JreFormImpl.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/JreFormImpl.java
old mode 100755
new mode 100644
index 48a2f18e837..76d9d418e92
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/JreFormImpl.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/JreFormImpl.java
@@ -1,166 +1,166 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on May 1, 2006
- */
-package net.sf.launch4j.formimpl;
-
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-
-import javax.swing.DefaultComboBoxModel;
-import javax.swing.JFileChooser;
-import javax.swing.JTextField;
-
-import net.sf.launch4j.binding.Bindings;
-import net.sf.launch4j.binding.Validator;
-import net.sf.launch4j.form.JreForm;
-import net.sf.launch4j.config.Jre;
-
-/**
- * @author Copyright (C) 2006 Grzegorz Kowal
- */
-public class JreFormImpl extends JreForm {
-
- public JreFormImpl(Bindings bindings, JFileChooser fc) {
- _jdkPreferenceCombo.setModel(new DefaultComboBoxModel(new String[] {
- Messages.getString("jdkPreference.jre.only"),
- Messages.getString("jdkPreference.prefer.jre"),
- Messages.getString("jdkPreference.prefer.jdk"),
- Messages.getString("jdkPreference.jdk.only")}));
- bindings.add("jre.path", _jrePathField)
- .add("jre.minVersion", _jreMinField)
- .add("jre.maxVersion", _jreMaxField)
- .add("jre.jdkPreferenceIndex", _jdkPreferenceCombo,
- Jre.DEFAULT_JDK_PREFERENCE_INDEX)
- .add("jre.initialHeapSize", _initialHeapSizeField)
- .add("jre.initialHeapPercent", _initialHeapPercentField)
- .add("jre.maxHeapSize", _maxHeapSizeField)
- .add("jre.maxHeapPercent", _maxHeapPercentField)
- .add("jre.options", _jvmOptionsTextArea);
-
- _varCombo.setModel(new DefaultComboBoxModel(new String[] {
- "EXEDIR", "EXEFILE", "PWD", "OLDPWD",
- "HKEY_CLASSES_ROOT", "HKEY_CURRENT_USER", "HKEY_LOCAL_MACHINE",
- "HKEY_USERS", "HKEY_CURRENT_CONFIG" }));
-
- _varCombo.addActionListener(new VarComboActionListener());
- _varCombo.setSelectedIndex(0);
-
- _propertyButton.addActionListener(new PropertyActionListener());
- _optionButton.addActionListener(new OptionActionListener());
-
- _envPropertyButton.addActionListener(new EnvPropertyActionListener(_envVarField));
- _envOptionButton.addActionListener(new EnvOptionActionListener(_envVarField));
- }
-
- private class VarComboActionListener implements ActionListener {
- public void actionPerformed(ActionEvent e) {
- _optionButton.setEnabled(((String) _varCombo.getSelectedItem())
- .startsWith("HKEY_"));
- }
- }
-
- private class PropertyActionListener implements ActionListener {
- public void actionPerformed(ActionEvent e) {
- final int pos = _jvmOptionsTextArea.getCaretPosition();
- final String var = (String) _varCombo.getSelectedItem();
- if (var.startsWith("HKEY_")) {
- _jvmOptionsTextArea.insert("-Dreg.key=\"%"
- + var + "\\\\...%\"\n", pos);
- } else {
- _jvmOptionsTextArea.insert("-Dlaunch4j." + var.toLowerCase()
- + "=\"%" + var + "%\"\n", pos);
- }
- }
- }
-
- private class OptionActionListener implements ActionListener {
- public void actionPerformed(ActionEvent e) {
- final int pos = _jvmOptionsTextArea.getCaretPosition();
- final String var = (String) _varCombo.getSelectedItem();
- if (var.startsWith("HKEY_")) {
- _jvmOptionsTextArea.insert("%" + var + "\\\\...%\n", pos);
- } else {
- _jvmOptionsTextArea.insert("%" + var + "%\n", pos);
- }
- }
- }
-
- private abstract class EnvActionListener extends AbstractAcceptListener {
- public EnvActionListener(JTextField f, boolean listen) {
- super(f, listen);
- }
-
- public void actionPerformed(ActionEvent e) {
- final int pos = _jvmOptionsTextArea.getCaretPosition();
- final String var = getText()
- .replaceAll("\"", "")
- .replaceAll("%", "");
- if (Validator.isEmpty(var)) {
- signalViolation(Messages.getString("specifyVar"));
- return;
- }
- add(var, pos);
- clear();
- }
-
- protected abstract void add(String var, int pos);
- }
-
- private class EnvPropertyActionListener extends EnvActionListener {
- public EnvPropertyActionListener(JTextField f) {
- super(f, true);
- }
-
- protected void add(String var, int pos) {
- final String prop = var
- .replaceAll(" ", ".")
- .replaceAll("_", ".")
- .toLowerCase();
- _jvmOptionsTextArea.insert("-Denv." + prop + "=\"%" + var
- + "%\"\n", pos);
- }
- }
-
- private class EnvOptionActionListener extends EnvActionListener {
- public EnvOptionActionListener(JTextField f) {
- super(f, false);
- }
-
- protected void add(String var, int pos) {
- _jvmOptionsTextArea.insert("%" + var + "%\n", pos);
- }
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on May 1, 2006
+ */
+package net.sf.launch4j.formimpl;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JFileChooser;
+import javax.swing.JTextField;
+
+import net.sf.launch4j.binding.Bindings;
+import net.sf.launch4j.binding.Validator;
+import net.sf.launch4j.form.JreForm;
+import net.sf.launch4j.config.Jre;
+
+/**
+ * @author Copyright (C) 2006 Grzegorz Kowal
+ */
+public class JreFormImpl extends JreForm {
+
+ public JreFormImpl(Bindings bindings, JFileChooser fc) {
+ _jdkPreferenceCombo.setModel(new DefaultComboBoxModel(new String[] {
+ Messages.getString("jdkPreference.jre.only"),
+ Messages.getString("jdkPreference.prefer.jre"),
+ Messages.getString("jdkPreference.prefer.jdk"),
+ Messages.getString("jdkPreference.jdk.only")}));
+ bindings.add("jre.path", _jrePathField)
+ .add("jre.minVersion", _jreMinField)
+ .add("jre.maxVersion", _jreMaxField)
+ .add("jre.jdkPreferenceIndex", _jdkPreferenceCombo,
+ Jre.DEFAULT_JDK_PREFERENCE_INDEX)
+ .add("jre.initialHeapSize", _initialHeapSizeField)
+ .add("jre.initialHeapPercent", _initialHeapPercentField)
+ .add("jre.maxHeapSize", _maxHeapSizeField)
+ .add("jre.maxHeapPercent", _maxHeapPercentField)
+ .add("jre.options", _jvmOptionsTextArea);
+
+ _varCombo.setModel(new DefaultComboBoxModel(new String[] {
+ "EXEDIR", "EXEFILE", "PWD", "OLDPWD",
+ "HKEY_CLASSES_ROOT", "HKEY_CURRENT_USER", "HKEY_LOCAL_MACHINE",
+ "HKEY_USERS", "HKEY_CURRENT_CONFIG" }));
+
+ _varCombo.addActionListener(new VarComboActionListener());
+ _varCombo.setSelectedIndex(0);
+
+ _propertyButton.addActionListener(new PropertyActionListener());
+ _optionButton.addActionListener(new OptionActionListener());
+
+ _envPropertyButton.addActionListener(new EnvPropertyActionListener(_envVarField));
+ _envOptionButton.addActionListener(new EnvOptionActionListener(_envVarField));
+ }
+
+ private class VarComboActionListener implements ActionListener {
+ public void actionPerformed(ActionEvent e) {
+ _optionButton.setEnabled(((String) _varCombo.getSelectedItem())
+ .startsWith("HKEY_"));
+ }
+ }
+
+ private class PropertyActionListener implements ActionListener {
+ public void actionPerformed(ActionEvent e) {
+ final int pos = _jvmOptionsTextArea.getCaretPosition();
+ final String var = (String) _varCombo.getSelectedItem();
+ if (var.startsWith("HKEY_")) {
+ _jvmOptionsTextArea.insert("-Dreg.key=\"%"
+ + var + "\\\\...%\"\n", pos);
+ } else {
+ _jvmOptionsTextArea.insert("-Dlaunch4j." + var.toLowerCase()
+ + "=\"%" + var + "%\"\n", pos);
+ }
+ }
+ }
+
+ private class OptionActionListener implements ActionListener {
+ public void actionPerformed(ActionEvent e) {
+ final int pos = _jvmOptionsTextArea.getCaretPosition();
+ final String var = (String) _varCombo.getSelectedItem();
+ if (var.startsWith("HKEY_")) {
+ _jvmOptionsTextArea.insert("%" + var + "\\\\...%\n", pos);
+ } else {
+ _jvmOptionsTextArea.insert("%" + var + "%\n", pos);
+ }
+ }
+ }
+
+ private abstract class EnvActionListener extends AbstractAcceptListener {
+ public EnvActionListener(JTextField f, boolean listen) {
+ super(f, listen);
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ final int pos = _jvmOptionsTextArea.getCaretPosition();
+ final String var = getText()
+ .replaceAll("\"", "")
+ .replaceAll("%", "");
+ if (Validator.isEmpty(var)) {
+ signalViolation(Messages.getString("specifyVar"));
+ return;
+ }
+ add(var, pos);
+ clear();
+ }
+
+ protected abstract void add(String var, int pos);
+ }
+
+ private class EnvPropertyActionListener extends EnvActionListener {
+ public EnvPropertyActionListener(JTextField f) {
+ super(f, true);
+ }
+
+ protected void add(String var, int pos) {
+ final String prop = var
+ .replaceAll(" ", ".")
+ .replaceAll("_", ".")
+ .toLowerCase();
+ _jvmOptionsTextArea.insert("-Denv." + prop + "=\"%" + var
+ + "%\"\n", pos);
+ }
+ }
+
+ private class EnvOptionActionListener extends EnvActionListener {
+ public EnvOptionActionListener(JTextField f) {
+ super(f, false);
+ }
+
+ protected void add(String var, int pos) {
+ _jvmOptionsTextArea.insert("%" + var + "%\n", pos);
+ }
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/MainFrame.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/MainFrame.java
old mode 100755
new mode 100644
index 4a2cc871596..89c783c32b4
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/MainFrame.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/MainFrame.java
@@ -1,358 +1,358 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on 2005-05-09
- */
-package net.sf.launch4j.formimpl;
-
-import java.awt.BorderLayout;
-import java.awt.Dimension;
-import java.awt.Toolkit;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-import java.io.File;
-
-import javax.swing.ImageIcon;
-import javax.swing.JButton;
-import javax.swing.JFileChooser;
-import javax.swing.JFrame;
-import javax.swing.JOptionPane;
-import javax.swing.JToolBar;
-import javax.swing.UIManager;
-
-import com.jgoodies.looks.Options;
-import com.jgoodies.looks.plastic.PlasticXPLookAndFeel;
-
-import foxtrot.Task;
-import foxtrot.Worker;
-
-import net.sf.launch4j.Builder;
-import net.sf.launch4j.BuilderException;
-import net.sf.launch4j.ExecException;
-import net.sf.launch4j.FileChooserFilter;
-import net.sf.launch4j.Log;
-import net.sf.launch4j.Main;
-import net.sf.launch4j.Util;
-import net.sf.launch4j.binding.Binding;
-import net.sf.launch4j.binding.BindingException;
-import net.sf.launch4j.binding.InvariantViolationException;
-import net.sf.launch4j.config.Config;
-import net.sf.launch4j.config.ConfigPersister;
-import net.sf.launch4j.config.ConfigPersisterException;
-
-/**
- * @author Copyright (C) 2005 Grzegorz Kowal
- */
-public class MainFrame extends JFrame {
- private static MainFrame _instance;
-
- private final JToolBar _toolBar;
- private final JButton _runButton;
- private final ConfigFormImpl _configForm;
- private final JFileChooser _fileChooser = new FileChooser(MainFrame.class);
- private File _outfile;
- private boolean _saved = false;
-
- public static void createInstance() {
- try {
- Toolkit.getDefaultToolkit().setDynamicLayout(true);
- System.setProperty("sun.awt.noerasebackground","true");
-
- // JGoodies
- Options.setDefaultIconSize(new Dimension(16, 16)); // menu icons
- Options.setUseNarrowButtons(false);
- Options.setPopupDropShadowEnabled(true);
-
- UIManager.setLookAndFeel(new PlasticXPLookAndFeel());
- _instance = new MainFrame();
- } catch (Exception e) {
- System.err.println(e);
- }
- }
-
- public static MainFrame getInstance() {
- return _instance;
- }
-
- public MainFrame() {
- showConfigName(null);
- setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
- addWindowListener(new MainFrameListener());
- setGlassPane(new GlassPane(this));
- _fileChooser.setFileFilter(new FileChooserFilter(
- Messages.getString("MainFrame.config.files"),
- new String[] {".xml", ".cfg"}));
-
- _toolBar = new JToolBar();
- _toolBar.setFloatable(false);
- _toolBar.setRollover(true);
- addButton("images/new.png", Messages.getString("MainFrame.new.config"),
- new NewActionListener());
- addButton("images/open.png", Messages.getString("MainFrame.open.config"),
- new OpenActionListener());
- addButton("images/save.png", Messages.getString("MainFrame.save.config"),
- new SaveActionListener());
- _toolBar.addSeparator();
- addButton("images/build.png", Messages.getString("MainFrame.build.wrapper"),
- new BuildActionListener());
- _runButton = addButton("images/run.png",
- Messages.getString("MainFrame.test.wrapper"),
- new RunActionListener());
- setRunEnabled(false);
- _toolBar.addSeparator();
- addButton("images/info.png", Messages.getString("MainFrame.about.launch4j"),
- new AboutActionListener());
-
- _configForm = new ConfigFormImpl();
- getContentPane().setLayout(new BorderLayout());
- getContentPane().add(_toolBar, BorderLayout.NORTH);
- getContentPane().add(_configForm, BorderLayout.CENTER);
- pack();
- Dimension scr = Toolkit.getDefaultToolkit().getScreenSize();
- Dimension fr = getSize();
- fr.width += 25;
- fr.height += 100;
- setBounds((scr.width - fr.width) / 2, (scr.height - fr.height) / 2,
- fr.width, fr.height);
- setVisible(true);
- }
-
- private JButton addButton(String iconPath, String tooltip, ActionListener l) {
- ImageIcon icon = new ImageIcon(MainFrame.class.getClassLoader()
- .getResource(iconPath));
- JButton b = new JButton(icon);
- b.setToolTipText(tooltip);
- b.addActionListener(l);
- _toolBar.add(b);
- return b;
- }
-
- public void info(String text) {
- JOptionPane.showMessageDialog(this,
- text,
- Main.getName(),
- JOptionPane.INFORMATION_MESSAGE);
- }
-
- public void warn(String text) {
- JOptionPane.showMessageDialog(this,
- text,
- Main.getName(),
- JOptionPane.WARNING_MESSAGE);
- }
-
- public void warn(InvariantViolationException e) {
- Binding b = e.getBinding();
- if (b != null) {
- b.markInvalid();
- }
- warn(e.getMessage());
- if (b != null) {
- e.getBinding().markValid();
- }
- }
-
- public boolean confirm(String text) {
- return JOptionPane.showConfirmDialog(MainFrame.this,
- text,
- Messages.getString("MainFrame.confirm"),
- JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION;
- }
-
- private boolean isModified() {
- return (!_configForm.isModified())
- || confirm(Messages.getString("MainFrame.discard.changes"));
- }
-
- private boolean save() {
- // XXX
- try {
- _configForm.get(ConfigPersister.getInstance().getConfig());
- if (_fileChooser.showSaveDialog(MainFrame.this) == JOptionPane.YES_OPTION) {
- File f = _fileChooser.getSelectedFile();
- if (!f.getPath().endsWith(".xml")) {
- f = new File(f.getPath() + ".xml");
- }
- ConfigPersister.getInstance().save(f);
- _saved = true;
- showConfigName(f);
- return true;
- }
- return false;
- } catch (InvariantViolationException ex) {
- warn(ex);
- return false;
- } catch (BindingException ex) {
- warn(ex.getMessage());
- return false;
- } catch (ConfigPersisterException ex) {
- warn(ex.getMessage());
- return false;
- }
- }
-
- private void showConfigName(File config) {
- setTitle(Main.getName() + " - " + (config != null ? config.getName()
- : Messages.getString("MainFrame.untitled")));
- }
-
- private void setRunEnabled(boolean enabled) {
- if (!enabled) {
- _outfile = null;
- }
- _runButton.setEnabled(enabled);
- }
-
- private void clearConfig() {
- ConfigPersister.getInstance().createBlank();
- _configForm.clear(ConfigPersister.getInstance().getConfig());
- }
-
- private class MainFrameListener extends WindowAdapter {
- public void windowOpened(WindowEvent e) {
- clearConfig();
- }
-
- public void windowClosing(WindowEvent e) {
- if (isModified()) {
- System.exit(0);
- }
- }
- }
-
- private class NewActionListener implements ActionListener {
- public void actionPerformed(ActionEvent e) {
- if (isModified()) {
- clearConfig();
- }
- _saved = false;
- showConfigName(null);
- setRunEnabled(false);
- }
- }
-
- private class OpenActionListener implements ActionListener {
- public void actionPerformed(ActionEvent e) {
- try {
- if (isModified() && _fileChooser.showOpenDialog(MainFrame.this)
- == JOptionPane.YES_OPTION) {
- final File f = _fileChooser.getSelectedFile();
- if (f.getPath().endsWith(".xml")) {
- ConfigPersister.getInstance().load(f);
- _saved = true;
- } else {
- ConfigPersister.getInstance().loadVersion1(f);
- _saved = false;
- }
- _configForm.put(ConfigPersister.getInstance().getConfig());
- showConfigName(f);
- setRunEnabled(false);
- }
- } catch (ConfigPersisterException ex) {
- warn(ex.getMessage());
- } catch (BindingException ex) {
- warn(ex.getMessage());
- }
- }
- }
-
- private class SaveActionListener implements ActionListener {
- public void actionPerformed(ActionEvent e) {
- save();
- }
- }
-
- private class BuildActionListener implements ActionListener {
- public void actionPerformed(ActionEvent e) {
- final Log log = Log.getSwingLog(_configForm.getLogTextArea());
- try {
- if ((!_saved || _configForm.isModified())
- && !save()) {
- return;
- }
- log.clear();
- ConfigPersister.getInstance().getConfig().checkInvariants();
- Builder b = new Builder(log);
- _outfile = b.build();
- setRunEnabled(ConfigPersister.getInstance().getConfig()
- .getHeaderType() == Config.GUI_HEADER // TODO fix console app test
- && (Util.WINDOWS_OS || !ConfigPersister.getInstance()
- .getConfig().isDontWrapJar()));
- } catch (InvariantViolationException ex) {
- setRunEnabled(false);
- ex.setBinding(_configForm.getBinding(ex.getProperty()));
- warn(ex);
- } catch (BuilderException ex) {
- setRunEnabled(false);
- log.append(ex.getMessage());
- }
- }
- }
-
- private class RunActionListener implements ActionListener {
- public void actionPerformed(ActionEvent e) {
- try {
- getGlassPane().setVisible(true);
- Worker.post(new Task() {
- public Object run() throws ExecException {
- Log log = Log.getSwingLog(_configForm.getLogTextArea());
- log.clear();
- String path = _outfile.getPath();
- if (Util.WINDOWS_OS) {
- log.append(Messages.getString("MainFrame.executing") + path);
- Util.exec(new String[] { path }, log);
- } else {
- log.append(Messages.getString("MainFrame.jar.integrity.test")
- + path);
- Util.exec(new String[] { "java", "-jar", path }, log);
- }
- return null;
- }
- });
- } catch (Exception ex) {
- // XXX errors logged by exec
- } finally {
- getGlassPane().setVisible(false);
- }
- };
- }
-
- private class AboutActionListener implements ActionListener {
- public void actionPerformed(ActionEvent e) {
- info(Main.getDescription());
- }
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on 2005-05-09
+ */
+package net.sf.launch4j.formimpl;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.File;
+
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JFileChooser;
+import javax.swing.JFrame;
+import javax.swing.JOptionPane;
+import javax.swing.JToolBar;
+import javax.swing.UIManager;
+
+import com.jgoodies.looks.Options;
+import com.jgoodies.looks.plastic.PlasticXPLookAndFeel;
+
+import foxtrot.Task;
+import foxtrot.Worker;
+
+import net.sf.launch4j.Builder;
+import net.sf.launch4j.BuilderException;
+import net.sf.launch4j.ExecException;
+import net.sf.launch4j.FileChooserFilter;
+import net.sf.launch4j.Log;
+import net.sf.launch4j.Main;
+import net.sf.launch4j.Util;
+import net.sf.launch4j.binding.Binding;
+import net.sf.launch4j.binding.BindingException;
+import net.sf.launch4j.binding.InvariantViolationException;
+import net.sf.launch4j.config.Config;
+import net.sf.launch4j.config.ConfigPersister;
+import net.sf.launch4j.config.ConfigPersisterException;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class MainFrame extends JFrame {
+ private static MainFrame _instance;
+
+ private final JToolBar _toolBar;
+ private final JButton _runButton;
+ private final ConfigFormImpl _configForm;
+ private final JFileChooser _fileChooser = new FileChooser(MainFrame.class);
+ private File _outfile;
+ private boolean _saved = false;
+
+ public static void createInstance() {
+ try {
+ Toolkit.getDefaultToolkit().setDynamicLayout(true);
+ System.setProperty("sun.awt.noerasebackground","true");
+
+ // JGoodies
+ Options.setDefaultIconSize(new Dimension(16, 16)); // menu icons
+ Options.setUseNarrowButtons(false);
+ Options.setPopupDropShadowEnabled(true);
+
+ UIManager.setLookAndFeel(new PlasticXPLookAndFeel());
+ _instance = new MainFrame();
+ } catch (Exception e) {
+ System.err.println(e);
+ }
+ }
+
+ public static MainFrame getInstance() {
+ return _instance;
+ }
+
+ public MainFrame() {
+ showConfigName(null);
+ setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
+ addWindowListener(new MainFrameListener());
+ setGlassPane(new GlassPane(this));
+ _fileChooser.setFileFilter(new FileChooserFilter(
+ Messages.getString("MainFrame.config.files"),
+ new String[] {".xml", ".cfg"}));
+
+ _toolBar = new JToolBar();
+ _toolBar.setFloatable(false);
+ _toolBar.setRollover(true);
+ addButton("images/new.png", Messages.getString("MainFrame.new.config"),
+ new NewActionListener());
+ addButton("images/open.png", Messages.getString("MainFrame.open.config"),
+ new OpenActionListener());
+ addButton("images/save.png", Messages.getString("MainFrame.save.config"),
+ new SaveActionListener());
+ _toolBar.addSeparator();
+ addButton("images/build.png", Messages.getString("MainFrame.build.wrapper"),
+ new BuildActionListener());
+ _runButton = addButton("images/run.png",
+ Messages.getString("MainFrame.test.wrapper"),
+ new RunActionListener());
+ setRunEnabled(false);
+ _toolBar.addSeparator();
+ addButton("images/info.png", Messages.getString("MainFrame.about.launch4j"),
+ new AboutActionListener());
+
+ _configForm = new ConfigFormImpl();
+ getContentPane().setLayout(new BorderLayout());
+ getContentPane().add(_toolBar, BorderLayout.NORTH);
+ getContentPane().add(_configForm, BorderLayout.CENTER);
+ pack();
+ Dimension scr = Toolkit.getDefaultToolkit().getScreenSize();
+ Dimension fr = getSize();
+ fr.width += 25;
+ fr.height += 100;
+ setBounds((scr.width - fr.width) / 2, (scr.height - fr.height) / 2,
+ fr.width, fr.height);
+ setVisible(true);
+ }
+
+ private JButton addButton(String iconPath, String tooltip, ActionListener l) {
+ ImageIcon icon = new ImageIcon(MainFrame.class.getClassLoader()
+ .getResource(iconPath));
+ JButton b = new JButton(icon);
+ b.setToolTipText(tooltip);
+ b.addActionListener(l);
+ _toolBar.add(b);
+ return b;
+ }
+
+ public void info(String text) {
+ JOptionPane.showMessageDialog(this,
+ text,
+ Main.getName(),
+ JOptionPane.INFORMATION_MESSAGE);
+ }
+
+ public void warn(String text) {
+ JOptionPane.showMessageDialog(this,
+ text,
+ Main.getName(),
+ JOptionPane.WARNING_MESSAGE);
+ }
+
+ public void warn(InvariantViolationException e) {
+ Binding b = e.getBinding();
+ if (b != null) {
+ b.markInvalid();
+ }
+ warn(e.getMessage());
+ if (b != null) {
+ e.getBinding().markValid();
+ }
+ }
+
+ public boolean confirm(String text) {
+ return JOptionPane.showConfirmDialog(MainFrame.this,
+ text,
+ Messages.getString("MainFrame.confirm"),
+ JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION;
+ }
+
+ private boolean isModified() {
+ return (!_configForm.isModified())
+ || confirm(Messages.getString("MainFrame.discard.changes"));
+ }
+
+ private boolean save() {
+ // XXX
+ try {
+ _configForm.get(ConfigPersister.getInstance().getConfig());
+ if (_fileChooser.showSaveDialog(MainFrame.this) == JOptionPane.YES_OPTION) {
+ File f = _fileChooser.getSelectedFile();
+ if (!f.getPath().endsWith(".xml")) {
+ f = new File(f.getPath() + ".xml");
+ }
+ ConfigPersister.getInstance().save(f);
+ _saved = true;
+ showConfigName(f);
+ return true;
+ }
+ return false;
+ } catch (InvariantViolationException ex) {
+ warn(ex);
+ return false;
+ } catch (BindingException ex) {
+ warn(ex.getMessage());
+ return false;
+ } catch (ConfigPersisterException ex) {
+ warn(ex.getMessage());
+ return false;
+ }
+ }
+
+ private void showConfigName(File config) {
+ setTitle(Main.getName() + " - " + (config != null ? config.getName()
+ : Messages.getString("MainFrame.untitled")));
+ }
+
+ private void setRunEnabled(boolean enabled) {
+ if (!enabled) {
+ _outfile = null;
+ }
+ _runButton.setEnabled(enabled);
+ }
+
+ private void clearConfig() {
+ ConfigPersister.getInstance().createBlank();
+ _configForm.clear(ConfigPersister.getInstance().getConfig());
+ }
+
+ private class MainFrameListener extends WindowAdapter {
+ public void windowOpened(WindowEvent e) {
+ clearConfig();
+ }
+
+ public void windowClosing(WindowEvent e) {
+ if (isModified()) {
+ System.exit(0);
+ }
+ }
+ }
+
+ private class NewActionListener implements ActionListener {
+ public void actionPerformed(ActionEvent e) {
+ if (isModified()) {
+ clearConfig();
+ }
+ _saved = false;
+ showConfigName(null);
+ setRunEnabled(false);
+ }
+ }
+
+ private class OpenActionListener implements ActionListener {
+ public void actionPerformed(ActionEvent e) {
+ try {
+ if (isModified() && _fileChooser.showOpenDialog(MainFrame.this)
+ == JOptionPane.YES_OPTION) {
+ final File f = _fileChooser.getSelectedFile();
+ if (f.getPath().endsWith(".xml")) {
+ ConfigPersister.getInstance().load(f);
+ _saved = true;
+ } else {
+ ConfigPersister.getInstance().loadVersion1(f);
+ _saved = false;
+ }
+ _configForm.put(ConfigPersister.getInstance().getConfig());
+ showConfigName(f);
+ setRunEnabled(false);
+ }
+ } catch (ConfigPersisterException ex) {
+ warn(ex.getMessage());
+ } catch (BindingException ex) {
+ warn(ex.getMessage());
+ }
+ }
+ }
+
+ private class SaveActionListener implements ActionListener {
+ public void actionPerformed(ActionEvent e) {
+ save();
+ }
+ }
+
+ private class BuildActionListener implements ActionListener {
+ public void actionPerformed(ActionEvent e) {
+ final Log log = Log.getSwingLog(_configForm.getLogTextArea());
+ try {
+ if ((!_saved || _configForm.isModified())
+ && !save()) {
+ return;
+ }
+ log.clear();
+ ConfigPersister.getInstance().getConfig().checkInvariants();
+ Builder b = new Builder(log);
+ _outfile = b.build();
+ setRunEnabled(ConfigPersister.getInstance().getConfig()
+ .getHeaderType() == Config.GUI_HEADER // TODO fix console app test
+ && (Util.WINDOWS_OS || !ConfigPersister.getInstance()
+ .getConfig().isDontWrapJar()));
+ } catch (InvariantViolationException ex) {
+ setRunEnabled(false);
+ ex.setBinding(_configForm.getBinding(ex.getProperty()));
+ warn(ex);
+ } catch (BuilderException ex) {
+ setRunEnabled(false);
+ log.append(ex.getMessage());
+ }
+ }
+ }
+
+ private class RunActionListener implements ActionListener {
+ public void actionPerformed(ActionEvent e) {
+ try {
+ getGlassPane().setVisible(true);
+ Worker.post(new Task() {
+ public Object run() throws ExecException {
+ Log log = Log.getSwingLog(_configForm.getLogTextArea());
+ log.clear();
+ String path = _outfile.getPath();
+ if (Util.WINDOWS_OS) {
+ log.append(Messages.getString("MainFrame.executing") + path);
+ Util.exec(new String[] { path }, log);
+ } else {
+ log.append(Messages.getString("MainFrame.jar.integrity.test")
+ + path);
+ Util.exec(new String[] { "java", "-jar", path }, log);
+ }
+ return null;
+ }
+ });
+ } catch (Exception ex) {
+ // XXX errors logged by exec
+ } finally {
+ getGlassPane().setVisible(false);
+ }
+ };
+ }
+
+ private class AboutActionListener implements ActionListener {
+ public void actionPerformed(ActionEvent e) {
+ info(Main.getDescription());
+ }
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/Messages.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/Messages.java
old mode 100755
new mode 100644
index 5e1c64110db..5285552b7b4
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/Messages.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/Messages.java
@@ -1,55 +1,55 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package net.sf.launch4j.formimpl;
-
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-public class Messages {
- private static final String BUNDLE_NAME = "net.sf.launch4j.formimpl.messages";
-
- private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
- .getBundle(BUNDLE_NAME);
-
- private Messages() {
- }
-
- public static String getString(String key) {
- try {
- return RESOURCE_BUNDLE.getString(key);
- } catch (MissingResourceException e) {
- return '!' + key + '!';
- }
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+package net.sf.launch4j.formimpl;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+public class Messages {
+ private static final String BUNDLE_NAME = "net.sf.launch4j.formimpl.messages";
+
+ private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
+ .getBundle(BUNDLE_NAME);
+
+ private Messages() {
+ }
+
+ public static String getString(String key) {
+ try {
+ return RESOURCE_BUNDLE.getString(key);
+ } catch (MissingResourceException e) {
+ return '!' + key + '!';
+ }
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/MessagesFormImpl.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/MessagesFormImpl.java
old mode 100755
new mode 100644
index c05d7f0474d..356c50eb26a
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/MessagesFormImpl.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/MessagesFormImpl.java
@@ -1,58 +1,58 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on Oct 7, 2006
- */
-package net.sf.launch4j.formimpl;
-
-import net.sf.launch4j.binding.Bindings;
-import net.sf.launch4j.config.Msg;
-import net.sf.launch4j.form.MessagesForm;
-
-/**
- * @author Copyright (C) 2006 Grzegorz Kowal
- */
-public class MessagesFormImpl extends MessagesForm {
-
- public MessagesFormImpl(Bindings bindings) {
- Msg m = new Msg();
- bindings.addOptComponent("messages", Msg.class, _messagesCheck)
- .add("messages.startupErr", _startupErrTextArea, m.getStartupErr())
- .add("messages.bundledJreErr", _bundledJreErrTextArea, m.getBundledJreErr())
- .add("messages.jreVersionErr", _jreVersionErrTextArea, m.getJreVersionErr())
- .add("messages.launcherErr", _launcherErrTextArea, m.getLauncherErr())
- .add("messages.instanceAlreadyExistsMsg", _instanceAlreadyExistsMsgTextArea,
- m.getInstanceAlreadyExistsMsg());
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on Oct 7, 2006
+ */
+package net.sf.launch4j.formimpl;
+
+import net.sf.launch4j.binding.Bindings;
+import net.sf.launch4j.config.Msg;
+import net.sf.launch4j.form.MessagesForm;
+
+/**
+ * @author Copyright (C) 2006 Grzegorz Kowal
+ */
+public class MessagesFormImpl extends MessagesForm {
+
+ public MessagesFormImpl(Bindings bindings) {
+ Msg m = new Msg();
+ bindings.addOptComponent("messages", Msg.class, _messagesCheck)
+ .add("messages.startupErr", _startupErrTextArea, m.getStartupErr())
+ .add("messages.bundledJreErr", _bundledJreErrTextArea, m.getBundledJreErr())
+ .add("messages.jreVersionErr", _jreVersionErrTextArea, m.getJreVersionErr())
+ .add("messages.launcherErr", _launcherErrTextArea, m.getLauncherErr())
+ .add("messages.instanceAlreadyExistsMsg", _instanceAlreadyExistsMsgTextArea,
+ m.getInstanceAlreadyExistsMsg());
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/SingleInstanceFormImpl.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/SingleInstanceFormImpl.java
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/SplashFormImpl.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/SplashFormImpl.java
old mode 100755
new mode 100644
index 7413d4a213f..d4f00863112
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/SplashFormImpl.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/SplashFormImpl.java
@@ -1,61 +1,61 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on May 1, 2006
- */
-package net.sf.launch4j.formimpl;
-
-import javax.swing.JFileChooser;
-
-import net.sf.launch4j.FileChooserFilter;
-import net.sf.launch4j.binding.Bindings;
-import net.sf.launch4j.config.Splash;
-import net.sf.launch4j.form.SplashForm;
-
-/**
- * @author Copyright (C) 2006 Grzegorz Kowal
- */
-public class SplashFormImpl extends SplashForm {
-
- public SplashFormImpl(Bindings bindings, JFileChooser fc) {
- bindings.addOptComponent("splash", Splash.class, _splashCheck)
- .add("splash.file", _splashFileField)
- .add("splash.waitForWindow", _waitForWindowCheck, true)
- .add("splash.timeout", _timeoutField, "60")
- .add("splash.timeoutErr", _timeoutErrCheck, true);
-
- _splashFileButton.addActionListener(new BrowseActionListener(false, fc,
- new FileChooserFilter("Bitmap files (.bmp)", ".bmp"), _splashFileField));
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on May 1, 2006
+ */
+package net.sf.launch4j.formimpl;
+
+import javax.swing.JFileChooser;
+
+import net.sf.launch4j.FileChooserFilter;
+import net.sf.launch4j.binding.Bindings;
+import net.sf.launch4j.config.Splash;
+import net.sf.launch4j.form.SplashForm;
+
+/**
+ * @author Copyright (C) 2006 Grzegorz Kowal
+ */
+public class SplashFormImpl extends SplashForm {
+
+ public SplashFormImpl(Bindings bindings, JFileChooser fc) {
+ bindings.addOptComponent("splash", Splash.class, _splashCheck)
+ .add("splash.file", _splashFileField)
+ .add("splash.waitForWindow", _waitForWindowCheck, true)
+ .add("splash.timeout", _timeoutField, "60")
+ .add("splash.timeoutErr", _timeoutErrCheck, true);
+
+ _splashFileButton.addActionListener(new BrowseActionListener(false, fc,
+ new FileChooserFilter("Bitmap files (.bmp)", ".bmp"), _splashFileField));
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/VersionInfoFormImpl.java b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/VersionInfoFormImpl.java
old mode 100755
new mode 100644
index c2f60d1d38a..d7c52e40111
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/VersionInfoFormImpl.java
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/VersionInfoFormImpl.java
@@ -1,63 +1,63 @@
-/*
- Launch4j (http://launch4j.sourceforge.net/)
- Cross-platform Java application wrapper for creating Windows native executables.
-
- Copyright (c) 2004, 2007 Grzegorz Kowal
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the Launch4j nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * Created on May 1, 2006
- */
-package net.sf.launch4j.formimpl;
-
-import javax.swing.JFileChooser;
-
-import net.sf.launch4j.binding.Bindings;
-import net.sf.launch4j.config.VersionInfo;
-import net.sf.launch4j.form.VersionInfoForm;
-
-/**
- * @author Copyright (C) 2006 Grzegorz Kowal
- */
-public class VersionInfoFormImpl extends VersionInfoForm {
-
- public VersionInfoFormImpl(Bindings bindings, JFileChooser fc) {
- bindings.addOptComponent("versionInfo", VersionInfo.class, _versionInfoCheck)
- .add("versionInfo.fileVersion", _fileVersionField)
- .add("versionInfo.productVersion", _productVersionField)
- .add("versionInfo.fileDescription", _fileDescriptionField)
- .add("versionInfo.internalName", _internalNameField)
- .add("versionInfo.originalFilename", _originalFilenameField)
- .add("versionInfo.productName", _productNameField)
- .add("versionInfo.txtFileVersion", _txtFileVersionField)
- .add("versionInfo.txtProductVersion", _txtProductVersionField)
- .add("versionInfo.companyName", _companyNameField)
- .add("versionInfo.copyright", _copyrightField);
- }
-}
+/*
+ Launch4j (http://launch4j.sourceforge.net/)
+ Cross-platform Java application wrapper for creating Windows native executables.
+
+ Copyright (c) 2004, 2007 Grzegorz Kowal
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the Launch4j nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Created on May 1, 2006
+ */
+package net.sf.launch4j.formimpl;
+
+import javax.swing.JFileChooser;
+
+import net.sf.launch4j.binding.Bindings;
+import net.sf.launch4j.config.VersionInfo;
+import net.sf.launch4j.form.VersionInfoForm;
+
+/**
+ * @author Copyright (C) 2006 Grzegorz Kowal
+ */
+public class VersionInfoFormImpl extends VersionInfoForm {
+
+ public VersionInfoFormImpl(Bindings bindings, JFileChooser fc) {
+ bindings.addOptComponent("versionInfo", VersionInfo.class, _versionInfoCheck)
+ .add("versionInfo.fileVersion", _fileVersionField)
+ .add("versionInfo.productVersion", _productVersionField)
+ .add("versionInfo.fileDescription", _fileDescriptionField)
+ .add("versionInfo.internalName", _internalNameField)
+ .add("versionInfo.originalFilename", _originalFilenameField)
+ .add("versionInfo.productName", _productNameField)
+ .add("versionInfo.txtFileVersion", _txtFileVersionField)
+ .add("versionInfo.txtProductVersion", _txtProductVersionField)
+ .add("versionInfo.companyName", _companyNameField)
+ .add("versionInfo.copyright", _copyrightField);
+ }
+}
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/messages.properties b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/messages.properties
old mode 100755
new mode 100644
index 53a2442a886..f168a8f5fa3
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/messages.properties
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/messages.properties
@@ -1,74 +1,74 @@
-#
-# Launch4j (http://launch4j.sourceforge.net/)
-# Cross-platform Java application wrapper for creating Windows native executables.
-#
-# Copyright (c) 2004, 2007 Grzegorz Kowal
-#
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without modification,
-# are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-# this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-# this list of conditions and the following disclaimer in the documentation
-# and/or other materials provided with the distribution.
-# * Neither the name of the Launch4j nor the names of its contributors
-# may be used to endorse or promote products derived from this software without
-# specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-
-tab.basic=Basic
-tab.classpath=Classpath
-tab.header=Header
-tab.singleInstance=Single instance
-tab.jre=JRE
-tab.envVars=Set env. variables
-tab.splash=Splash
-tab.version=Version Info
-tab.messages=Messages
-
-# Basic
-jar=Jar:
-jarPath=Jar runtime path:
-jarTip=Application jar.
-jarPathTip=Optional runtime path of the jar relative to the executable. For example, if the executable launcher and the application jar named calc.exe and calc.jar are in the same directory, it would be: calc.jar.
-
-# Classpath
-specifyClassPath=Specify classpath item to add.
-confirmClassPathRemoval=Remove selected classpath items?
-noManifest=The selected jar does not have a manifest.
-
-# JRE
-specifyVar=Specify environment variable to add.
-otherVar=Other var
-jdkPreference.jre.only=Only use public JREs
-jdkPreference.prefer.jre=Prefer public JRE, but use JDK runtime if newer
-jdkPreference.prefer.jdk=Prefer JDK runtime, but use public JRE if newer
-jdkPreference.jdk.only=Only use private JDK runtimes
-
-MainFrame.config.files=launch4j config files (.xml, .cfg)
-MainFrame.new.config=New configuration
-MainFrame.open.config=Open configuration or import 1.x
-MainFrame.save.config=Save configuration
-MainFrame.build.wrapper=Build wrapper
-MainFrame.test.wrapper=Test wrapper
-MainFrame.about.launch4j=About launch4j
-MainFrame.discard.changes=Discard changes?
-MainFrame.confirm=Confirm
-MainFrame.untitled=untitled
-MainFrame.executing=Executing:
-MainFrame.jar.integrity.test=Jar integrity test, executing:
+#
+# Launch4j (http://launch4j.sourceforge.net/)
+# Cross-platform Java application wrapper for creating Windows native executables.
+#
+# Copyright (c) 2004, 2007 Grzegorz Kowal
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification,
+# are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Launch4j nor the names of its contributors
+# may be used to endorse or promote products derived from this software without
+# specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+tab.basic=Basic
+tab.classpath=Classpath
+tab.header=Header
+tab.singleInstance=Single instance
+tab.jre=JRE
+tab.envVars=Set env. variables
+tab.splash=Splash
+tab.version=Version Info
+tab.messages=Messages
+
+# Basic
+jar=Jar:
+jarPath=Jar runtime path:
+jarTip=Application jar.
+jarPathTip=Optional runtime path of the jar relative to the executable. For example, if the executable launcher and the application jar named calc.exe and calc.jar are in the same directory, it would be: calc.jar.
+
+# Classpath
+specifyClassPath=Specify classpath item to add.
+confirmClassPathRemoval=Remove selected classpath items?
+noManifest=The selected jar does not have a manifest.
+
+# JRE
+specifyVar=Specify environment variable to add.
+otherVar=Other var
+jdkPreference.jre.only=Only use public JREs
+jdkPreference.prefer.jre=Prefer public JRE, but use JDK runtime if newer
+jdkPreference.prefer.jdk=Prefer JDK runtime, but use public JRE if newer
+jdkPreference.jdk.only=Only use private JDK runtimes
+
+MainFrame.config.files=launch4j config files (.xml, .cfg)
+MainFrame.new.config=New configuration
+MainFrame.open.config=Open configuration or import 1.x
+MainFrame.save.config=Save configuration
+MainFrame.build.wrapper=Build wrapper
+MainFrame.test.wrapper=Test wrapper
+MainFrame.about.launch4j=About launch4j
+MainFrame.discard.changes=Discard changes?
+MainFrame.confirm=Confirm
+MainFrame.untitled=untitled
+MainFrame.executing=Executing:
+MainFrame.jar.integrity.test=Jar integrity test, executing:
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/messages_es.properties b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/messages_es.properties
old mode 100755
new mode 100644
index 1d2fac25f5f..42e2a996523
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/messages_es.properties
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/formimpl/messages_es.properties
@@ -1,56 +1,56 @@
-#
-# Launch4j (http://launch4j.sourceforge.net/)
-# Cross-platform Java application wrapper for creating Windows native executables.
-#
-# Copyright (c) 2004, 2007 Grzegorz Kowal, Patricio Mart�nez Ros
-#
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without modification,
-# are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-# this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-# this list of conditions and the following disclaimer in the documentation
-# and/or other materials provided with the distribution.
-# * Neither the name of the Launch4j nor the names of its contributors
-# may be used to endorse or promote products derived from this software without
-# specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-
-tab.basic = B\u00E1sico
-tab.header = Cabecera
-tab.jre = JRE
-tab.splash = Pantalla de bienvenida
-tab.version = Informaci\u00F3n de la versi\u00F3n
-
-jar = Jar
-jarPath = Ruta del jar
-jarTip = Jar de la aplicaci\u00F3n.
-jarPathTip = Ruta del jar relativa al ejecutable. Por ejemplo, si el lanzador ejecutable y el jar de la aplicaci\u00F3n, llamados calc.exe y calc.jar respectivamente, est\u00E1n en el mismo directorio, ser\u00EDa\: calc.jar.
-
-MainFrame.config.files = Ficheros de configuraci\u00F3n de launch4j (.xml, .cfg)
-MainFrame.new.config = Nueva configuraci\u00F3n
-MainFrame.open.config = Abrir configuraci\u00F3n o importar 1.x
-MainFrame.save.config = Guardar configuraci\u00F3n
-MainFrame.build.wrapper = Construir el empaquetador
-MainFrame.test.wrapper = Comprobar el empaquetador
-MainFrame.about.launch4j = Acerca de launch4j
-MainFrame.discard.changes = \u00BFDescartar cambios?
-MainFrame.confirm = Confirmar
-MainFrame.untitled = Sin nombre
-MainFrame.executing = Ejecutando\:
-MainFrame.jar.integrity.test = Prueba de integridad jar, ejecutando\:
+#
+# Launch4j (http://launch4j.sourceforge.net/)
+# Cross-platform Java application wrapper for creating Windows native executables.
+#
+# Copyright (c) 2004, 2007 Grzegorz Kowal, Patricio Mart�nez Ros
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification,
+# are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Launch4j nor the names of its contributors
+# may be used to endorse or promote products derived from this software without
+# specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+tab.basic = B\u00E1sico
+tab.header = Cabecera
+tab.jre = JRE
+tab.splash = Pantalla de bienvenida
+tab.version = Informaci\u00F3n de la versi\u00F3n
+
+jar = Jar
+jarPath = Ruta del jar
+jarTip = Jar de la aplicaci\u00F3n.
+jarPathTip = Ruta del jar relativa al ejecutable. Por ejemplo, si el lanzador ejecutable y el jar de la aplicaci\u00F3n, llamados calc.exe y calc.jar respectivamente, est\u00E1n en el mismo directorio, ser\u00EDa\: calc.jar.
+
+MainFrame.config.files = Ficheros de configuraci\u00F3n de launch4j (.xml, .cfg)
+MainFrame.new.config = Nueva configuraci\u00F3n
+MainFrame.open.config = Abrir configuraci\u00F3n o importar 1.x
+MainFrame.save.config = Guardar configuraci\u00F3n
+MainFrame.build.wrapper = Construir el empaquetador
+MainFrame.test.wrapper = Comprobar el empaquetador
+MainFrame.about.launch4j = Acerca de launch4j
+MainFrame.discard.changes = \u00BFDescartar cambios?
+MainFrame.confirm = Confirmar
+MainFrame.untitled = Sin nombre
+MainFrame.executing = Ejecutando\:
+MainFrame.jar.integrity.test = Prueba de integridad jar, ejecutando\:
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/messages.properties b/build/windows/launcher/launch4j/src/net/sf/launch4j/messages.properties
old mode 100755
new mode 100644
index cf28d15afd4..77cbcfd13a0
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/messages.properties
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/messages.properties
@@ -1,45 +1,45 @@
-#
-# Launch4j (http://launch4j.sourceforge.net/)
-# Cross-platform Java application wrapper for creating Windows native executables.
-#
-# Copyright (c) 2004, 2007 Grzegorz Kowal
-#
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without modification,
-# are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-# this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-# this list of conditions and the following disclaimer in the documentation
-# and/or other materials provided with the distribution.
-# * Neither the name of the Launch4j nor the names of its contributors
-# may be used to endorse or promote products derived from this software without
-# specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-
-Main.usage=usage
-
-Builder.compiling.resources=Compiling resources
-Builder.linking=Linking
-Builder.wrapping=Wrapping
-Builder.success=Successfully created
-Builder.generated.resource.file=Generated resource file...\n
-Builder.line.has.errors=Line {0} has errors...
-
-Util.exec.failed=Exec failed
-Util.tmpdir=Temporary file directory path (launch4j.tmpdir) cannot contain spaces.
-Util.use.double.backslash=Use \\\\ to code Windows paths in fields that don't represent files or paths!
+#
+# Launch4j (http://launch4j.sourceforge.net/)
+# Cross-platform Java application wrapper for creating Windows native executables.
+#
+# Copyright (c) 2004, 2007 Grzegorz Kowal
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification,
+# are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Launch4j nor the names of its contributors
+# may be used to endorse or promote products derived from this software without
+# specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+Main.usage=usage
+
+Builder.compiling.resources=Compiling resources
+Builder.linking=Linking
+Builder.wrapping=Wrapping
+Builder.success=Successfully created
+Builder.generated.resource.file=Generated resource file...\n
+Builder.line.has.errors=Line {0} has errors...
+
+Util.exec.failed=Exec failed
+Util.tmpdir=Temporary file directory path (launch4j.tmpdir) cannot contain spaces.
+Util.use.double.backslash=Use \\\\ to code Windows paths in fields that don't represent files or paths!
diff --git a/build/windows/launcher/launch4j/src/net/sf/launch4j/messages_es.properties b/build/windows/launcher/launch4j/src/net/sf/launch4j/messages_es.properties
old mode 100755
new mode 100644
index b179d9bd511..d7da9bc8217
--- a/build/windows/launcher/launch4j/src/net/sf/launch4j/messages_es.properties
+++ b/build/windows/launcher/launch4j/src/net/sf/launch4j/messages_es.properties
@@ -1,45 +1,45 @@
-#
-# Launch4j (http://launch4j.sourceforge.net/)
-# Cross-platform Java application wrapper for creating Windows native executables.
-#
-# Copyright (c) 2004, 2007 Grzegorz Kowal, Patricio Mart�nez Ros
-#
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without modification,
-# are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-# this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-# this list of conditions and the following disclaimer in the documentation
-# and/or other materials provided with the distribution.
-# * Neither the name of the Launch4j nor the names of its contributors
-# may be used to endorse or promote products derived from this software without
-# specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-
-Main.usage=Uso
-
-Builder.compiling.resources=Compilando recursos
-Builder.linking=Enlazando
-Builder.wrapping=Empaquetando
-Builder.success=Creado con \ufffdxito
-Builder.generated.resource.file=Fichero de recursos generado...\n
-Builder.line.has.errors=Line {0} has errors...
-
-Util.exec.failed=Fallo en la ejecuci\ufffd
-Util.tmpdir=Temporary file directory path (launch4j.tmpdir) cannot contain spaces.
+#
+# Launch4j (http://launch4j.sourceforge.net/)
+# Cross-platform Java application wrapper for creating Windows native executables.
+#
+# Copyright (c) 2004, 2007 Grzegorz Kowal, Patricio Mart�nez Ros
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification,
+# are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Launch4j nor the names of its contributors
+# may be used to endorse or promote products derived from this software without
+# specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+Main.usage=Uso
+
+Builder.compiling.resources=Compilando recursos
+Builder.linking=Enlazando
+Builder.wrapping=Empaquetando
+Builder.success=Creado con \ufffdxito
+Builder.generated.resource.file=Fichero de recursos generado...\n
+Builder.line.has.errors=Line {0} has errors...
+
+Util.exec.failed=Fallo en la ejecuci\ufffd
+Util.tmpdir=Temporary file directory path (launch4j.tmpdir) cannot contain spaces.
Util.use.double.backslash=Use \\\\ to code Windows paths in fields that don't represent files or paths!
\ No newline at end of file
diff --git a/build/windows/launcher/launch4j/w32api/MinGW.LICENSE.txt b/build/windows/launcher/launch4j/w32api/MinGW.LICENSE.txt
old mode 100755
new mode 100644
index 141412dd9f1..aea85bd8dcd
--- a/build/windows/launcher/launch4j/w32api/MinGW.LICENSE.txt
+++ b/build/windows/launcher/launch4j/w32api/MinGW.LICENSE.txt
@@ -1,25 +1,25 @@
-MinGW - Licensing Terms
-
-Various pieces distributed with MinGW come with its own copyright and license:
-
-Basic MinGW runtime
- MinGW base runtime package is uncopyrighted and placed in the public domain.
- This basically means that you can do what you want with the code.
-
-w32api
- You are free to use, modify and copy this package.
- No restrictions are imposed on programs or object files compiled with this library.
- You may not restrict the the usage of this library.
- You may distribute this library as part of another package or as a modified package
- if and only if you do not restrict the usage of the portions consisting
- of this (optionally modified) library.
- If distributed as a modified package then this file must be included.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-MinGW profiling code
- MinGW profiling code is distributed under the GNU General Public License.
-
-The development tools such as GCC, GDB, GNU Make, etc all covered by GNU General Public License.
+MinGW - Licensing Terms
+
+Various pieces distributed with MinGW come with its own copyright and license:
+
+Basic MinGW runtime
+ MinGW base runtime package is uncopyrighted and placed in the public domain.
+ This basically means that you can do what you want with the code.
+
+w32api
+ You are free to use, modify and copy this package.
+ No restrictions are imposed on programs or object files compiled with this library.
+ You may not restrict the the usage of this library.
+ You may distribute this library as part of another package or as a modified package
+ if and only if you do not restrict the usage of the portions consisting
+ of this (optionally modified) library.
+ If distributed as a modified package then this file must be included.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty
+ of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+MinGW profiling code
+ MinGW profiling code is distributed under the GNU General Public License.
+
+The development tools such as GCC, GDB, GNU Make, etc all covered by GNU General Public License.
diff --git a/build/windows/launcher/launch4j/web/bullet.gif b/build/windows/launcher/launch4j/web/bullet.gif
old mode 100755
new mode 100644
diff --git a/build/windows/launcher/launch4j/web/changelog.html b/build/windows/launcher/launch4j/web/changelog.html
old mode 100755
new mode 100644
index 83511a55489..08ea00849e1
--- a/build/windows/launcher/launch4j/web/changelog.html
+++ b/build/windows/launcher/launch4j/web/changelog.html
@@ -1,48 +1,48 @@
-
-
-
- Launch4j - Cross-platform Java executable wrapper
-
-
-
-
-
-
-
-
Improved configuration file format and embedded Ant config.
-
Launch executable jars, regular jars and class files.
-
Added dynamic classpath resolution with environment variable references and wildcards.
-
Added option to set environment variables before launching the application.
-
New command line switches to change the compiled options.
-
Improved debug information.
-
Added support for XP visual style manifests.
-
Added option to disable use of private JREs.
-
Many small fixes and improvements...
-
-
-
Configuration file changes in 3.x
-
-
Previous formats (1.x and 2.x) are supported.
-
<headerType> accepts gui|console
-
<jarArgs> was changed to <cmdLine>
-
- <launch4jConfig><headerObjects><file> was changed to
- <launch4jConfig><obj>
-
-
- <launch4jConfig><libs><file> was changed to
- <launch4jConfig><lib>
-
-
- <launch4jConfig><jre><args> was changed to multiple
- <launch4jConfig><jre><opt>
-
-
-
-
Embedded Ant configuration changes in 3.x
-
-
- <jre args="value"> was changed to
- <jre><opt>value</opt></jre>
-
-
Now it's possible to define headerObjects, libs and classpath.
-
-
-
Changes in version 2.1.5 (21-07-2006)
-
-
Changed the Java download site to http://java.com/download.
-
Now it's possible to use absolute and relative paths to specify the bundled JRE.
-
-
-
Changes in version 2.1.4 (15-06-2006)
-
-
- Fixed bug #1503996 Only the first wrapper instance had a custom process name
- (found by Helge Böhme).
-
-
-
-
Changes in version 2.1.3 (31-05-2006)
-
-
- Fixed bug #1497453 Ant task doesn't support relative jar path with '..'
- (found by Aston, Pavel Moukhataev).
-
-
Jar argument size limit is now 16KB.
-
Environment variable size limit raised to 32KB.
-
Allow to concatenate multiple env. variables in one property (Maria D.)
-
Added launch4j.tmpdir property.
-
-
-
Changes in version 2.1.2 (03-04-2006)
-
-
Important bugfix: insufficient command line buffer size was increased to 32KB
- (found by Sebastian Kopsan).
-
Added runtime JVM options from an .ini file.
-
Launch4j's bin directory is now configurable through launch4j.bindir
- system property.
-
-
-
Changes in version 2.1.1 (25-01-2006)
-
-
Fixed bug #1402748. Validation error occurred when using an Ant task with
- embedded config and dontWrapJar option (found by Chris Nokleberg).
-
-
-
Changes in version 2.1.0 (10-01-2006)
-
-
More features and smaller header: 18 KB!!
-
Added launcher mode, you can choose whether or not to wrap the jar.
-
Spanish translation of the website/docs and program messages
- (Patricio Martínez Ros).
-
JRE's bin directory is appended to the Path environment variable
- (Ianiv Schweber).
-
Added special variables EXEDIR and EXEFILE that hold the executable's
- directory and full path.
-
Support for mapping environment variables to system properties.
-
Added debug launching mode - various information is displayed before
- starting the Java application.
-
Fixed min/max JRE version checking, previous versions allowed these
- to be equal (found by Ryan).
-
Bug fixed. Quotes in jar/JVM arguments were handled incorrectly (found by Juan Alvarez Ferrando).
-
A few other enhancements.
-
-
-
Changes in version 2.0.0 (31-10-2005)
-
-
Launch4j for Mac OS X is available thanks to Peter Centgraf.
-
Added support for custom headers.
-
Fixed bug #1343908, command line arguments with spaces were handled
- incorrectly by the console header (found by Oliver Schaefer / Steve Alberty).
-
Fixed stdin redirection bug (found by Timo Santasalo).
-
-
-
Changes in version 2.0 RC3 (13-08-2005) - final RC
-
-
Correct handling of pathnames with spaces.
-
Fixed the '%20' pathname bug.
-
Fixed basedir bug (Richard Xing).
-
Splash screen can be closed when the application window becomes visible
- with out specifying it's title (Martin Busik).
- Update your config file: <waitForTitle>title</waitForTitle>
- is now <waitForWindow>true</waitForWindow>.
-
-
Fixed build.bat files in demo directories.
-
-
-
Changes in version 2.0 RC2 (21-06-2005)
-
-
chdir allows to change the current directory to arbitrary paths
- relative to the executable (FR #1144907). It's incompatible with
- previous versions, update your config file:
- <chdir>true</chdir>
- is now <chdir>.</chdir>.
-
-
Bundled JRE path no longer depends on chdir function.
-
Fixed Ant task bug, build files outside launch4j's directory
- wouldn't work. Josh Elsasser submitted a patch that works without
- setting launch4j's home dir in the build file. Thanks!
-
-
Removed static edge from splash screen (Serge Baranov).
-
Program checks that the output file path doesn't contain spaces.
-
Fixed a NPE bug caused by a missing maxVersion property
- (found by Morgan Schweers).
-
-
Fixed relative JRE path bug (found by Nili_).
-
Cleaned up the Builder class.
-
Fixed Ant task NPE where the config was entirely defined in the
- build file (Josh Elsasser).
-
-
-
-
Changes in version 2.0 RC (07-06-2005)
-
-
Added an Ant task for better build integration.
-
Added 2.x documentation.
-
Updated the demo configuration files.
-
Fixed issues with relative paths in the configuration.
-
Removed the '-1' option in console mode.
-
Minor fixes.
-
-
-
Changes in version 2.0 beta2 (23-05-2005)
-
-
# comments are recognized when importing 1.x cfg files.
-
Added version information.
-
Resource file is displayed when a resource error occurs.
-
Fixed a bug found by Max, options on the first tab were always enabled.
-
-
-
Changes in version 2.0 beta1 (13-05-2005)
-
-
Completely new, cross-platform wrapper - create windows executables on Linux.
-
New .xml configuration file.
-
Application icon with multiple resolutions and color depths.
-
Swing GUI interface.
-
Header compiled with MinGW port of gcc instead of VC++.
-
-
-
Changes in version 1.4.2 (12-03-2005)
-
-
Fixed bug #1158143, stayAlive without a splash screen caused
- an infinite loop (found by Gregory Kotsaftis).
-
-
-
-
Changes in version 1.4.1 (04-03-2005)
-
-
Fixed bug #1119040, buffer for reading config properties
- was too short (found by Tom Jensen and Neil).
-
-
Added configurable splash timeout (FR #1102951).
-
Added option to disable the error message on splash timeout (FR #1109159).
-
Option to keep the gui launcher 'alive' after starting an application (FR #1124653).
-
Removed version info.
-
'waitfor' property is now optional.
-
-
-
Changes in version 1.4.0 (26-01-2005)
-
-
Removed .lch4j suffix from process name, now it has the
- form of the executable filename. The temporary launchers are stored in
- launch4j-tmp directory (suggested by Emmanuel).
-
-
Added support for console apps (FR #1050053).
-
-
-
Changes in version 1.3.1 (05-11-2004)
-
-
Fixed a bug where explorer window was opened instead of
- launching the application when setProcName was set to false
- (found by Rob Jones).
-
-
Fixed temporary launcher deletion bug.
-
-
-
Changes in version 1.3.0 (01-11-2004)
-
-
Now you can configure launch4j to:
-
-
Use a bundled JRE.
-
Search for java, show an error message if the
- right version cannot be found and open the java download page.
-
And a feature you asked for: use bundled JRE, if
- that fails search for java and bring up the java download page on error.
-
-
-
Enhanced code that sets the custom process name. In
- case launch4j can't refresh the temporary launcher, bundled JRE on a
- read only file system for example, it will use one created previously,
- if it's present and has the correct size. If not, launching will still
- continue, but with javaw.exe process name.Temporary launchers are
- now created in the jre directory instead of jre/bin.
-
-
errTitle property allows to set the title of the error message box.
-
-
-
Changes in version 1.2.1 (25-09-2004)
-
-
Bugfix that allows launching from command line using short
- name (#1026514 / found by Zach Del)
-
-
-
-
Changes in version 1.2.0 (10-09-2004)
-
-
Custom process name (myapp.lch4j.exe)
-
9 KB stub!
-
Jar arguments
-
Bugfix that allows launching from command line.
-
Hide splash on javaw error.
-
Easier configuration with case insensitive parameters + show unrecognized parameter.
-
12 KB demo application, 34 KB with splash screen.
-
Configuration parameter 'args' changed to 'jvmArgs'
-
-
+
+
Changes in version 3.0.0-pre2 (29-10-2006)
+
+
Enhanced GUI.
+
Redesigned error reporting.
+
Added custom error messages.
+
Added support website feature.
+
Added PWD and OLDPWD special variables and access to the registry.
+
Runtime ini file extension changed to .l4j.ini, added comments (#).
+
FR #1427811 Initial process priority.
+
FR #1547339 Added VarFileInfo structure to Version Info (Stephan Laertz).
+
FR #1584295 Updated documentation for --l4j-debug.
+
Fixed <jarArgs/> and <args/> config conversion bug (found by Dafe Simonek).
+
Fixed the Ant task exception reporting bug, added tmpdir and bindir attributes.
+
Fixed bug #1563415 Problem with launching application when ini file exists (found by mojomax).
+
Fixed bug #1527619 Console header wildcard expansion (found by erikjv).
+
Fixed bug #1544167 NPE when dontwrap and only classpath given (found by Hendrik Schreiber).
+
Fixed bug #1584264 Dropdown boxes get mixed up (found by Larsen).
Improved configuration file format and embedded Ant config.
+
Launch executable jars, regular jars and class files.
+
Added dynamic classpath resolution with environment variable references and wildcards.
+
Added option to set environment variables before launching the application.
+
New command line switches to change the compiled options.
+
Improved debug information.
+
Added support for XP visual style manifests.
+
Added option to disable use of private JREs.
+
Many small fixes and improvements...
+
+
+
Configuration file changes in 3.x
+
+
Previous formats (1.x and 2.x) are supported.
+
<headerType> accepts gui|console
+
<jarArgs> was changed to <cmdLine>
+
+ <launch4jConfig><headerObjects><file> was changed to
+ <launch4jConfig><obj>
+
+
+ <launch4jConfig><libs><file> was changed to
+ <launch4jConfig><lib>
+
+
+ <launch4jConfig><jre><args> was changed to multiple
+ <launch4jConfig><jre><opt>
+
+
+
+
Embedded Ant configuration changes in 3.x
+
+
+ <jre args="value"> was changed to
+ <jre><opt>value</opt></jre>
+
+
Now it's possible to define headerObjects, libs and classpath.
+
+
+
Changes in version 2.1.5 (21-07-2006)
+
+
Changed the Java download site to http://java.com/download.
+
Now it's possible to use absolute and relative paths to specify the bundled JRE.
+
+
+
Changes in version 2.1.4 (15-06-2006)
+
+
+ Fixed bug #1503996 Only the first wrapper instance had a custom process name
+ (found by Helge Böhme).
+
+
+
+
Changes in version 2.1.3 (31-05-2006)
+
+
+ Fixed bug #1497453 Ant task doesn't support relative jar path with '..'
+ (found by Aston, Pavel Moukhataev).
+
+
Jar argument size limit is now 16KB.
+
Environment variable size limit raised to 32KB.
+
Allow to concatenate multiple env. variables in one property (Maria D.)
+
Added launch4j.tmpdir property.
+
+
+
Changes in version 2.1.2 (03-04-2006)
+
+
Important bugfix: insufficient command line buffer size was increased to 32KB
+ (found by Sebastian Kopsan).
+
Added runtime JVM options from an .ini file.
+
Launch4j's bin directory is now configurable through launch4j.bindir
+ system property.
+
+
+
Changes in version 2.1.1 (25-01-2006)
+
+
Fixed bug #1402748. Validation error occurred when using an Ant task with
+ embedded config and dontWrapJar option (found by Chris Nokleberg).
+
+
+
Changes in version 2.1.0 (10-01-2006)
+
+
More features and smaller header: 18 KB!!
+
Added launcher mode, you can choose whether or not to wrap the jar.
+
Spanish translation of the website/docs and program messages
+ (Patricio Martínez Ros).
+
JRE's bin directory is appended to the Path environment variable
+ (Ianiv Schweber).
+
Added special variables EXEDIR and EXEFILE that hold the executable's
+ directory and full path.
+
Support for mapping environment variables to system properties.
+
Added debug launching mode - various information is displayed before
+ starting the Java application.
+
Fixed min/max JRE version checking, previous versions allowed these
+ to be equal (found by Ryan).
+
Bug fixed. Quotes in jar/JVM arguments were handled incorrectly (found by Juan Alvarez Ferrando).
+
A few other enhancements.
+
+
+
Changes in version 2.0.0 (31-10-2005)
+
+
Launch4j for Mac OS X is available thanks to Peter Centgraf.
+
Added support for custom headers.
+
Fixed bug #1343908, command line arguments with spaces were handled
+ incorrectly by the console header (found by Oliver Schaefer / Steve Alberty).
+
Fixed stdin redirection bug (found by Timo Santasalo).
+
+
+
Changes in version 2.0 RC3 (13-08-2005) - final RC
+
+
Correct handling of pathnames with spaces.
+
Fixed the '%20' pathname bug.
+
Fixed basedir bug (Richard Xing).
+
Splash screen can be closed when the application window becomes visible
+ with out specifying it's title (Martin Busik).
+ Update your config file: <waitForTitle>title</waitForTitle>
+ is now <waitForWindow>true</waitForWindow>.
+
+
Fixed build.bat files in demo directories.
+
+
+
Changes in version 2.0 RC2 (21-06-2005)
+
+
chdir allows to change the current directory to arbitrary paths
+ relative to the executable (FR #1144907). It's incompatible with
+ previous versions, update your config file:
+ <chdir>true</chdir>
+ is now <chdir>.</chdir>.
+
+
Bundled JRE path no longer depends on chdir function.
+
Fixed Ant task bug, build files outside launch4j's directory
+ wouldn't work. Josh Elsasser submitted a patch that works without
+ setting launch4j's home dir in the build file. Thanks!
+
+
Removed static edge from splash screen (Serge Baranov).
+
Program checks that the output file path doesn't contain spaces.
+
Fixed a NPE bug caused by a missing maxVersion property
+ (found by Morgan Schweers).
+
+
Fixed relative JRE path bug (found by Nili_).
+
Cleaned up the Builder class.
+
Fixed Ant task NPE where the config was entirely defined in the
+ build file (Josh Elsasser).
+
+
+
+
Changes in version 2.0 RC (07-06-2005)
+
+
Added an Ant task for better build integration.
+
Added 2.x documentation.
+
Updated the demo configuration files.
+
Fixed issues with relative paths in the configuration.
+
Removed the '-1' option in console mode.
+
Minor fixes.
+
+
+
Changes in version 2.0 beta2 (23-05-2005)
+
+
# comments are recognized when importing 1.x cfg files.
+
Added version information.
+
Resource file is displayed when a resource error occurs.
+
Fixed a bug found by Max, options on the first tab were always enabled.
+
+
+
Changes in version 2.0 beta1 (13-05-2005)
+
+
Completely new, cross-platform wrapper - create windows executables on Linux.
+
New .xml configuration file.
+
Application icon with multiple resolutions and color depths.
+
Swing GUI interface.
+
Header compiled with MinGW port of gcc instead of VC++.
+
+
+
Changes in version 1.4.2 (12-03-2005)
+
+
Fixed bug #1158143, stayAlive without a splash screen caused
+ an infinite loop (found by Gregory Kotsaftis).
+
+
+
+
Changes in version 1.4.1 (04-03-2005)
+
+
Fixed bug #1119040, buffer for reading config properties
+ was too short (found by Tom Jensen and Neil).
+
+
Added configurable splash timeout (FR #1102951).
+
Added option to disable the error message on splash timeout (FR #1109159).
+
Option to keep the gui launcher 'alive' after starting an application (FR #1124653).
+
Removed version info.
+
'waitfor' property is now optional.
+
+
+
Changes in version 1.4.0 (26-01-2005)
+
+
Removed .lch4j suffix from process name, now it has the
+ form of the executable filename. The temporary launchers are stored in
+ launch4j-tmp directory (suggested by Emmanuel).
+
+
Added support for console apps (FR #1050053).
+
+
+
Changes in version 1.3.1 (05-11-2004)
+
+
Fixed a bug where explorer window was opened instead of
+ launching the application when setProcName was set to false
+ (found by Rob Jones).
+
+
Fixed temporary launcher deletion bug.
+
+
+
Changes in version 1.3.0 (01-11-2004)
+
+
Now you can configure launch4j to:
+
+
Use a bundled JRE.
+
Search for java, show an error message if the
+ right version cannot be found and open the java download page.
+
And a feature you asked for: use bundled JRE, if
+ that fails search for java and bring up the java download page on error.
+
+
+
Enhanced code that sets the custom process name. In
+ case launch4j can't refresh the temporary launcher, bundled JRE on a
+ read only file system for example, it will use one created previously,
+ if it's present and has the correct size. If not, launching will still
+ continue, but with javaw.exe process name.Temporary launchers are
+ now created in the jre directory instead of jre/bin.
+
+
errTitle property allows to set the title of the error message box.
+
+
+
Changes in version 1.2.1 (25-09-2004)
+
+
Bugfix that allows launching from command line using short
+ name (#1026514 / found by Zach Del)
+
+
+
+
Changes in version 1.2.0 (10-09-2004)
+
+
Custom process name (myapp.lch4j.exe)
+
9 KB stub!
+
Jar arguments
+
Bugfix that allows launching from command line.
+
Hide splash on javaw error.
+
Easier configuration with case insensitive parameters + show unrecognized parameter.
+
12 KB demo application, 34 KB with splash screen.
+
Configuration parameter 'args' changed to 'jvmArgs'
-Run launch4j.exe or launch4j script without command
-line arguments to enter the GUI mode.
-
-
launch4j.exe
-
-To wrap a jar in console mode use launch4jc.exe and
-specify the configuration file.
-
-
launch4jc.exe config.xml
-
-On Linux use the launch4j script.
-
-
launch4j ./demo/l4j/config.xml
-
-
Configuration file
-Launch4j requires an xml configuration file for each output executable.
-You can create and edit it conveniently using the graphic user
-interface or your favorite editor. Alternatively it's possible to pass
-all of the configuration parameters through the Ant task. All files
-may be absolute paths or relative to the configuration file path.
-
-
+Run launch4j.exe or launch4j script without command
+line arguments to enter the GUI mode.
+
+
launch4j.exe
+
+To wrap a jar in console mode use launch4jc.exe and
+specify the configuration file.
+
+
launch4jc.exe config.xml
+
+On Linux use the launch4j script.
+
+
launch4j ./demo/l4j/config.xml
+
+
Configuration file
+Launch4j requires an xml configuration file for each output executable.
+You can create and edit it conveniently using the graphic user
+interface or your favorite editor. Alternatively it's possible to pass
+all of the configuration parameters through the Ant task. All files
+may be absolute paths or relative to the configuration file path.
+
+
+<!-- Bold elements are required -->
+<launch4jConfig>
+ <headerType>gui|console</headerType>
+ <outfile>file.exe</outfile>
+ <jar>file</jar>
+ <dontWrapJar>true|false</dontWrapJar>
+ <errTitle>text</errTitle>
+ <downloadUrl>http://java.com/download</downloadUrl>
+ <supportUrl>url</supportUrl>
+ <cmdLine>text</cmdLine>
+ <chdir>path</chdir>
+ <priority>normal|idle|high</priority>
+ <customProcName>true|false</customProcName>
+ <stayAlive>true|false</stayAlive>
+ <icon>file</icon>
+ <obj>header object file</obj>
+ ...
+ <lib>w32api lib</lib>
+ ...
+ <var>var=text</var>
+ ...
+ <classPath>
+ <mainClass>main class</mainClass>
+ <cp>classpath</cp>
+ ...
</classPath>
<singleInstance>
<mutexName>text</mutexName>
<windowTitle>text</windowTitle>
- </singleInstance>
- <jre>
- <!-- Specify one of the following or both -->
- <path>bundled JRE path</path>
- <minVersion>x.x.x[_xx]</minVersion>
- <maxVersion>x.x.x[_xx]</maxVersion>
- <jdkPreference>jreOnly|preferJre|preferJdk|jdkOnly</jdkPreference>
- <!-- Heap sizes in MB and % of free memory -->
+ </singleInstance>
+ <jre>
+ <!-- Specify one of the following or both -->
+ <path>bundled JRE path</path>
+ <minVersion>x.x.x[_xx]</minVersion>
+ <maxVersion>x.x.x[_xx]</maxVersion>
+ <jdkPreference>jreOnly|preferJre|preferJdk|jdkOnly</jdkPreference>
+ <!-- Heap sizes in MB and % of free memory -->
<initialHeapSize>MB</initialHeapSize>
- <initialHeapPercent>%</initialHeapPercent>
+ <initialHeapPercent>%</initialHeapPercent>
<maxHeapSize>MB</maxHeapSize>
- <maxHeapPercent>%</maxHeapPercent>
- <opt>text</opt>
- ...
- </jre>
- <splash>
- <file>file</file>
- <waitForWindow>true|false</waitForWindow>
- <timeout>seconds [60]</timeout>
- <timeoutErr>true|false</timeoutErr>
- </splash>
- <versionInfo>
- <fileVersion>x.x.x.x</fileVersion>
- <txtFileVersion>text</txtFileVersion>
- <fileDescription>text</fileDescription>
- <copyright>text</copyright>
- <productVersion>x.x.x.x</productVersion>
- <txtProductVersion>text</txtProductVersion>
- <productName>text</productName>
- <companyName>text</companyName>
- <internalName>filename</internalName>
- <originalFilename>filename.exe</originalFilename>
- </versionInfo>
- <messages>
- <startupErr>text</startupErr>
- <bundledJreErr>text</bundledJreErr>
- <jreVersionErr>text</jreVersionErr>
- <launcherErr>text</launcherErr>
- </messages>
-</launch4jConfig>
-
-
-
-
<headerType>
-
- Type of the header used to wrap the application.
-
-
-
-
Header type
-
Launcher
-
Splash screen
-
Wait for the application to close
-
-
-
-
-
gui
-
javaw
-
yes
-
wrapper waits only if stayAlive is set to true,
- otherwise it terminates immediately or after closing
- the splash screen.
-
-
-
-
console
-
java
-
no
-
always waits and returns application's exit code.
-
-
-
-
-
-
-
<outfile>
-
Output executable file.
-
-
-
<jar>
-
- Optional, by default specifies the jar to wrap. To launch a jar without
- wrapping it enter the runtime path of the jar relative to
- the executable and set <dontWrapJar> to true.
- For example, if the executable launcher and the application jar named
- calc.exe and calc.jar are in the same directory
- then you would use <jar>calc.jar</jar>
- and <dontWrapJar>true</dontWrapJar>.
-
-
-
-
<dontWrapJar>
-
- Optional, defaults to false. Launch4j by default wraps jars in native
- executables, you can prevent this by setting <dontWrapJar> to true.
- The exe acts then as a launcher and starts the application specified in
- <jar> or <classPath><mainClass>
-
-
-
-
<errTitle>
-
- Optional, sets the title of the error message box that's displayed if Java cannot
- be found for instance. This usually should contain the name of your
- application. The console header prefixes error messages with this
- property (myapp: error...)
-
-
-
-
<cmdLine>
-
Optional, constant command line arguments.
-
-
-
<chdir>
-
Optional. Change current directory to an arbitrary path relative to the executable.
- If you omit this property or leave it blank it will have no effect.
- Setting it to . will change the current dir to the same directory
- as the executable. .. will change it to the parent directory, and so on.
-
-
-
<chdir>.</chdir>
-
-
-
<chdir>../somedir</chdir>
-
-
-
-
<customProcName>
-
Optional, defaults to false.
- Set the process name as the executable filename and use Xp style manifests
- (if any).
- Creates a temporary file in launch4j-tmp directory inside the used JRE.
- These files are deleted by any launch4j wrapped application, which sets
- the process name and uses the same JRE. The removal takes place
- when the application starts,
- so at least one copy of this file will always be present.
-
-
-
-
<stayAlive>
-
Optional, defaults to false in GUI header, always true in console header.
- When enabled the launcher waits for the Java application
- to finish and returns it's exit code.
-
-
-
-
<icon>
-
Application icon in ICO format. May contain multiple color depths/resolutions.
-
-
-
<obj>
-
Optional, custom headers only. Ordered list of header object files.
-
-
-
<lib>
-
Optional, custom headers only. Ordered list of libraries used by header.
+ Type of the header used to wrap the application.
+
+
+
+
Header type
+
Launcher
+
Splash screen
+
Wait for the application to close
+
+
+
+
+
gui
+
javaw
+
yes
+
wrapper waits only if stayAlive is set to true,
+ otherwise it terminates immediately or after closing
+ the splash screen.
+
+
+
+
console
+
java
+
no
+
always waits and returns application's exit code.
+
+
+
+
+
+
+
<outfile>
+
Output executable file.
+
+
+
<jar>
+
+ Optional, by default specifies the jar to wrap. To launch a jar without
+ wrapping it enter the runtime path of the jar relative to
+ the executable and set <dontWrapJar> to true.
+ For example, if the executable launcher and the application jar named
+ calc.exe and calc.jar are in the same directory
+ then you would use <jar>calc.jar</jar>
+ and <dontWrapJar>true</dontWrapJar>.
+
+
+
+
<dontWrapJar>
+
+ Optional, defaults to false. Launch4j by default wraps jars in native
+ executables, you can prevent this by setting <dontWrapJar> to true.
+ The exe acts then as a launcher and starts the application specified in
+ <jar> or <classPath><mainClass>
+
+
+
+
<errTitle>
+
+ Optional, sets the title of the error message box that's displayed if Java cannot
+ be found for instance. This usually should contain the name of your
+ application. The console header prefixes error messages with this
+ property (myapp: error...)
+
+
+
+
<cmdLine>
+
Optional, constant command line arguments.
+
+
+
<chdir>
+
Optional. Change current directory to an arbitrary path relative to the executable.
+ If you omit this property or leave it blank it will have no effect.
+ Setting it to . will change the current dir to the same directory
+ as the executable. .. will change it to the parent directory, and so on.
+
+
+
<chdir>.</chdir>
+
+
+
<chdir>../somedir</chdir>
+
+
+
+
<customProcName>
+
Optional, defaults to false.
+ Set the process name as the executable filename and use Xp style manifests
+ (if any).
+ Creates a temporary file in launch4j-tmp directory inside the used JRE.
+ These files are deleted by any launch4j wrapped application, which sets
+ the process name and uses the same JRE. The removal takes place
+ when the application starts,
+ so at least one copy of this file will always be present.
+
+
+
+
<stayAlive>
+
Optional, defaults to false in GUI header, always true in console header.
+ When enabled the launcher waits for the Java application
+ to finish and returns it's exit code.
+
+
+
+
<icon>
+
Application icon in ICO format. May contain multiple color depths/resolutions.
+
+
+
<obj>
+
Optional, custom headers only. Ordered list of header object files.
+
+
+
<lib>
+
Optional, custom headers only. Ordered list of libraries used by header.
<singleInstance>
@@ -265,66 +265,66 @@
Configuration file
to bring up instead of running a new instance.
-
-
-
<jre>
-
Required element that groups JRE settings.
-
-
-
-
<path>, <minVersion>, <maxVersion>
-
The <path> property is used
- to specify the absolute or relative path (to the executable) of a bundled JRE, it
- does not rely on the current directory or <chdir>.
- Note that this path is not checked until the actual application execution.
- If you'd like the wrapper to search for a JRE (public or SDK private)
- use the <minVersion> property, you may also specify
+
+
+
<jre>
+
Required element that groups JRE settings.
+
+
+
+
<path>, <minVersion>, <maxVersion>
+
The <path> property is used
+ to specify the absolute or relative path (to the executable) of a bundled JRE, it
+ does not rely on the current directory or <chdir>.
+ Note that this path is not checked until the actual application execution.
+ If you'd like the wrapper to search for a JRE (public or SDK private)
+ use the <minVersion> property, you may also specify
the <maxVersion> to prevent it from using higher Java versions.
- Launch4j will always use the highest version available (in the min/max range of course).
+ Launch4j will always use the highest version available (in the min/max range of course).
If a Sun's JRE is not available or does not satisfy the search criteria,
the search will be repeated on IBM runtimes.
- You can also combine these properties to change the startup process...
-
-
-
-
-
<path>
-
Run if bundled JRE and javaw.exe are present, otherwise stop with error.
-
<path> + <minVersion> [+ <maxVersion>]
-
Use bundled JRE first, if it cannot be located search for Java,
- if that fails display error message and open the Java download page.
-
-
<minVersion> [+ <maxVersion>]
-
Search for Java, if an appropriate version cannot be found display
- error message and open the Java download page.
-
-
-
-
-
-
-
<jdkPreference>
-
Optional, defaults to preferJre; Allows you to specify a preference
+ You can also combine these properties to change the startup process...
+
+
+
+
+
<path>
+
Run if bundled JRE and javaw.exe are present, otherwise stop with error.
+
<path> + <minVersion> [+ <maxVersion>]
+
Use bundled JRE first, if it cannot be located search for Java,
+ if that fails display error message and open the Java download page.
+
+
<minVersion> [+ <maxVersion>]
+
Search for Java, if an appropriate version cannot be found display
+ error message and open the Java download page.
+
+
+
+
+
+
+
<jdkPreference>
+
Optional, defaults to preferJre; Allows you to specify a preference
for a public JRE or a private JDK runtime. Valid values are:
-
-
-
jreOnly
-
Always use a public JRE (equivalent to the
- old option dontUsePrivateJres=true)
-
preferJre
-
Prefer a public JRE, but use a JDK private
- runtime if it is newer than the public
- JRE (equivalent to the old option
- dontUsePrivateJres=false)
-
preferJdk
-
Prefer a JDK private runtime, but use a
- public JRE if it is newer than the
- JDK
-
jdkOnly
-
Always use a private JDK runtime (fails
- if there is no JDK installed)
+
+
+
jreOnly
+
Always use a public JRE (equivalent to the
+ old option dontUsePrivateJres=true)
+
preferJre
+
Prefer a public JRE, but use a JDK private
+ runtime if it is newer than the public
+ JRE (equivalent to the old option
+ dontUsePrivateJres=false)
+
preferJdk
+
Prefer a JDK private runtime, but use a
+ public JRE if it is newer than the
+ JDK
+
jdkOnly
+
Always use a private JDK runtime (fails
+ if there is no JDK installed)
@@ -352,234 +352,234 @@
Configuration file
Optional, max heap size in % of free memory.
-
-
<opt>
-
Optional, accepts everything you would normally pass to
- java/javaw launcher: assertion options, system properties and X options.
- Here you can map environment and special variables EXEDIR
- (exe's runtime directory), EXEFILE (exe's runtime full file path)
- to system properties. All variable references must be surrounded with
- percentage signs and quoted.
-
Optional, groups the splash screen settings. Allowed only in GUI header.
-
-
-
-
<file>
-
Splash screen image in BMP format.
-
-
-
<waitForWindow>
-
Optional, defaults to true. Close the splash screen when an application
- window or Java error message box appears. If set to false,
- the splash screen will be closed on timeout.
-
-
-
-
<timeout>
-
Optional, defaults to 60. Number of seconds after which the splash screen
- must be closed. Splash timeout may cause an error depending on
- <timeoutErr>.
-
-
-
-
<timeoutErr>
-
Optional, defaults to true. True signals an error on splash timeout,
- false closes the splash screen quietly.
-
-
-
-
-
-
<versionInfo>
-
Optional, version information to be displayed by the Windows Explorer.
-
-
-
-
<fileVersion>
-
Version number 'x.x.x.x'
-
-
-
<txtFileVersion>
-
Free form file version, for example '1.20.RC1'.
-
-
-
<fileDescription>
-
File description presented to the user.
-
-
-
<copyright>
-
Legal copyright.
-
-
-
<productVersion>
-
Version number 'x.x.x.x'
-
-
-
<txtProductVersion>
-
Free form file version, for example '1.20.RC1'.
-
-
-
<productName>
-
Text.
-
-
-
<companyName>
-
Optional text.
-
-
-
<internalName>
-
Internal name without extension, original filename or module name for example.
-
-
-
<originalFilename>
-
Original name of the file without the path. Allows to determine
- whether a file has been renamed by a user.
-
-
-
-
-
Importing 1.x configuration
-It's possible to import a 1.x configuration file using the GUI
-interface. Open the file, correct the paths and save it as a new xml
-configuration.
-
-
Ant task
-You may set a launch4j directory property or change the task definition.
-
-
-
-You can also define the entire configuration in the task, but it will
-not be possible to edit such a file in the GUI mode. All paths except
-for <chdir>, <jre><path> and jarPath
-are calculated using the basedir project attribute.
-
-
-When you create a wrapper or launcher all configuration details are compiled into the
-executable and cannot be changed without recreating it or hacking with a resource editor.
-Launch4j 2.1.2 introduces a new feature that allows to pass additional JVM options
-at runtime from an .l4j.ini file. Now you can specify the options in the configuration file,
-ini file or in both, but you cannot override them. The ini file's name must correspond
-to the executable's (myapp.exe : myapp.l4j.ini).
-The arguments should be separated with spaces or new lines, environment variable
-expansion is supported, for example:
-
- To make sure the output executable is configured correctly you can use the
- debug launching mode to log various information to the launch4j.log file.
-
-
-
--l4j-default-proc
-
- Use default process name.
-
-
-
--l4j-dont-wait
-
- Disable the "stay alive" function.
-
-
-
--l4j-no-splash
-
- Disable the splash screen.
-
-
-
--l4j-no-splash-err
-
- Disable splash screen error on timeout, might be useful on very slow computers.
-
-
-
-
Settings
-
-
Alternate bin directory: launch4j.bindir
-
- It's possible to override the default bin directory location which contains windres and ld
- tools using the launch4j.bindir system property. The property can have two forms:
- a path relative to Launch4j's directory (altbin for example) or an absolute path.
-
-
-
Working directory: launch4j.tmpdir
-
Change the working directory if the default path contains spaces which windres cannot handle.
-
-
+
+
<opt>
+
Optional, accepts everything you would normally pass to
+ java/javaw launcher: assertion options, system properties and X options.
+ Here you can map environment and special variables EXEDIR
+ (exe's runtime directory), EXEFILE (exe's runtime full file path)
+ to system properties. All variable references must be surrounded with
+ percentage signs and quoted.
+
Optional, groups the splash screen settings. Allowed only in GUI header.
+
+
+
+
<file>
+
Splash screen image in BMP format.
+
+
+
<waitForWindow>
+
Optional, defaults to true. Close the splash screen when an application
+ window or Java error message box appears. If set to false,
+ the splash screen will be closed on timeout.
+
+
+
+
<timeout>
+
Optional, defaults to 60. Number of seconds after which the splash screen
+ must be closed. Splash timeout may cause an error depending on
+ <timeoutErr>.
+
+
+
+
<timeoutErr>
+
Optional, defaults to true. True signals an error on splash timeout,
+ false closes the splash screen quietly.
+
+
+
+
+
+
<versionInfo>
+
Optional, version information to be displayed by the Windows Explorer.
+
+
+
+
<fileVersion>
+
Version number 'x.x.x.x'
+
+
+
<txtFileVersion>
+
Free form file version, for example '1.20.RC1'.
+
+
+
<fileDescription>
+
File description presented to the user.
+
+
+
<copyright>
+
Legal copyright.
+
+
+
<productVersion>
+
Version number 'x.x.x.x'
+
+
+
<txtProductVersion>
+
Free form file version, for example '1.20.RC1'.
+
+
+
<productName>
+
Text.
+
+
+
<companyName>
+
Optional text.
+
+
+
<internalName>
+
Internal name without extension, original filename or module name for example.
+
+
+
<originalFilename>
+
Original name of the file without the path. Allows to determine
+ whether a file has been renamed by a user.
+
+
+
+
+
Importing 1.x configuration
+It's possible to import a 1.x configuration file using the GUI
+interface. Open the file, correct the paths and save it as a new xml
+configuration.
+
+
Ant task
+You may set a launch4j directory property or change the task definition.
+
+
+
+You can also define the entire configuration in the task, but it will
+not be possible to edit such a file in the GUI mode. All paths except
+for <chdir>, <jre><path> and jarPath
+are calculated using the basedir project attribute.
+
+
+When you create a wrapper or launcher all configuration details are compiled into the
+executable and cannot be changed without recreating it or hacking with a resource editor.
+Launch4j 2.1.2 introduces a new feature that allows to pass additional JVM options
+at runtime from an .l4j.ini file. Now you can specify the options in the configuration file,
+ini file or in both, but you cannot override them. The ini file's name must correspond
+to the executable's (myapp.exe : myapp.l4j.ini).
+The arguments should be separated with spaces or new lines, environment variable
+expansion is supported, for example:
+
+ To make sure the output executable is configured correctly you can use the
+ debug launching mode to log various information to the launch4j.log file.
+
+
+
--l4j-default-proc
+
+ Use default process name.
+
+
+
--l4j-dont-wait
+
+ Disable the "stay alive" function.
+
+
+
--l4j-no-splash
+
+ Disable the splash screen.
+
+
+
--l4j-no-splash-err
+
+ Disable splash screen error on timeout, might be useful on very slow computers.
+
+
+
+
Settings
+
+
Alternate bin directory: launch4j.bindir
+
+ It's possible to override the default bin directory location which contains windres and ld
+ tools using the launch4j.bindir system property. The property can have two forms:
+ a path relative to Launch4j's directory (altbin for example) or an absolute path.
+
+
+
Working directory: launch4j.tmpdir
+
Change the working directory if the default path contains spaces which windres cannot handle.
- Launch4j is a cross-platform tool for wrapping
- Java applications distributed as jars in lightweight Windows
- native executables. The executable can be
- configured to search for a certain JRE version or
- use a bundled one, and it's possible to set
- runtime options, like the initial/max heap size.
- The wrapper also provides better user experience
- through an application icon, a native pre-JRE
- splash screen, a custom process name, and a Java
- download page in case the appropriate JRE cannot
- be found.
-
-
-
Features
-
-
Launch4j wraps jars in Windows native executables and allows to run them
- like a regular Windows program. It's possible to wrap applications
- on Windows, Linux, Mac OS X and Solaris!
-
-
Also creates launchers for jars and class files without wrapping.
-
- Supports executable jars and dynamic classpath resolution using
- environment variables and wildcards.
-
-
Doesn't extract the jar from the executable.
-
Custom application icon with multiple resolutions and color depths.
-
Native pre-JRE splash screen in BMP format shown until
- the Java application starts.
-
-
Process name as the executable filename to easily
- identify your application, initial priority and
- single aplication instance features.
-
-
Works with a bundled JRE or searches for newest Sun or IBM JRE / JDK in given
- version range.
-
Opens Java download page if an appropriate Java version cannot be
- found or a support website in case of an error.
-
-
Supports GUI and console apps.
-
Supports Vista manifests and XP visual style manifests.
-
Passes command line arguments, also supports constant arguments.
-
Allows to set the initial/max heap size also dynamically in percent of free memory.
-
JVM options: set system properties, tweak the garbage collection...
-
Runtime JVM options from an .l4j.ini file.
-
Runtime command line switches to change the compiled options.
-
Access to environment variables, the registry and executable file path through system properties.
-
Set environment variables.
-
Option to change current directory to the executable location.
-
The JRE's bin directory is appended to the Path environment variable.
-
Custom version information shown by Windows Explorer.
-
GUI and command line interface.
-
Build integration through an Ant task and a Maven Plugin.
-
Lightweight: 26 KB!
-
It's free and may be used for commercial purposes.
-
Includes a sample application and Ant script
- that automates the build process from Java sources to native executable.
-
-
The wrapped program works on all Windows platforms (98/Me/NT/2K/XP/Vista),
- Launch4j works on NT/2K/XP/Vista, Linux, Mac OS X (build on 10.4) and Sparc Solaris 8-10.
-
-
-
License
-
- This program is free software licensed under the
- BSD license, the head subproject
- (the code which is attached to the wrapped jars) is licensed under the
- MIT license.
- Launch4j may be used for wrapping closed source, commercial applications.
-
-
Info
-
- Running Launch4j on other Java enabled platforms is a matter of getting a binary version
- of MinGW binutils 2.15.90 (windres and ld only)
- for your system or compiling them. If you'll provide these, I'll be able to create a binary package
- available for download.
-
+ Launch4j is a cross-platform tool for wrapping
+ Java applications distributed as jars in lightweight Windows
+ native executables. The executable can be
+ configured to search for a certain JRE version or
+ use a bundled one, and it's possible to set
+ runtime options, like the initial/max heap size.
+ The wrapper also provides better user experience
+ through an application icon, a native pre-JRE
+ splash screen, a custom process name, and a Java
+ download page in case the appropriate JRE cannot
+ be found.
+
+
+
Features
+
+
Launch4j wraps jars in Windows native executables and allows to run them
+ like a regular Windows program. It's possible to wrap applications
+ on Windows, Linux, Mac OS X and Solaris!
+
+
Also creates launchers for jars and class files without wrapping.
+
+ Supports executable jars and dynamic classpath resolution using
+ environment variables and wildcards.
+
+
Doesn't extract the jar from the executable.
+
Custom application icon with multiple resolutions and color depths.
+
Native pre-JRE splash screen in BMP format shown until
+ the Java application starts.
+
+
Process name as the executable filename to easily
+ identify your application, initial priority and
+ single aplication instance features.
+
+
Works with a bundled JRE or searches for newest Sun or IBM JRE / JDK in given
+ version range.
+
Opens Java download page if an appropriate Java version cannot be
+ found or a support website in case of an error.
+
+
Supports GUI and console apps.
+
Supports Vista manifests and XP visual style manifests.
+
Passes command line arguments, also supports constant arguments.
+
Allows to set the initial/max heap size also dynamically in percent of free memory.
+
JVM options: set system properties, tweak the garbage collection...
+
Runtime JVM options from an .l4j.ini file.
+
Runtime command line switches to change the compiled options.
+
Access to environment variables, the registry and executable file path through system properties.
+
Set environment variables.
+
Option to change current directory to the executable location.
+
The JRE's bin directory is appended to the Path environment variable.
+
Custom version information shown by Windows Explorer.
+
GUI and command line interface.
+
Build integration through an Ant task and a Maven Plugin.
+
Lightweight: 26 KB!
+
It's free and may be used for commercial purposes.
+
Includes a sample application and Ant script
+ that automates the build process from Java sources to native executable.
+
+
The wrapped program works on all Windows platforms (98/Me/NT/2K/XP/Vista),
+ Launch4j works on NT/2K/XP/Vista, Linux, Mac OS X (build on 10.4) and Sparc Solaris 8-10.
+
+
+
License
+
+ This program is free software licensed under the
+ BSD license, the head subproject
+ (the code which is attached to the wrapped jars) is licensed under the
+ MIT license.
+ Launch4j may be used for wrapping closed source, commercial applications.
+
+
Info
+
+ Running Launch4j on other Java enabled platforms is a matter of getting a binary version
+ of MinGW binutils 2.15.90 (windres and ld only)
+ for your system or compiling them. If you'll provide these, I'll be able to create a binary package
+ available for download.
+