FinalCrypt - The No¹ One-Time Pad Encryption
Revisión | e41fb320a27befb10e43ae5c390602e8f85f2164 (tree) |
---|---|
Tiempo | 2019-11-25 13:26:54 |
Autor | ron <ronuitzaandam@gmai...> |
Commiter | ron |
Date: 2019-11-25 Version: 5.6.6
Improved Apple OSX stability FinalCrypt User Interface
Support Window now closes on Home / Share button click
No longer printing keypaths on statusbar creating keys
@@ -1,3 +1,9 @@ | ||
1 | +Date: 2019-11-25 Version: 5.6.6 | |
2 | + | |
3 | +Improved Apple OSX stability FinalCrypt User Interface | |
4 | +Support Window now closes on Home / Share button click | |
5 | +No longer printing keypaths on statusbar creating keys | |
6 | + | |
1 | 7 | Date: 2019-11-24 Version: 5.6.5 |
2 | 8 | |
3 | 9 | Fixed Brute Force Dict-Size, Heap-Mem & Performance |
@@ -62,4 +62,4 @@ Parameters: | ||
62 | 62 | <[-t "file/dir"]> Target items (files or directories) you want to encrypt (recursive). |
63 | 63 | <[-b "batchfile"]> Batchfile with targetfiles you want to encrypt (only files). |
64 | 64 | |
65 | -FinalCrypt 5.6.5 - Author: Ron de Jong <info@finalcrypt.org> - Copyright: © 2017-2019 | |
\ No newline at end of file | ||
65 | +FinalCrypt 5.6.6 - Author: Ron de Jong <info@finalcrypt.org> - Copyright: © 2017-2019 | |
\ No newline at end of file |
@@ -76,4 +76,4 @@ Key Device Examples (Linux): | ||
76 | 76 | java -cp finalcrypt.jar rdj/CLUI --encrypt -k /dev/sdc1 -t myfile |
77 | 77 | java -cp finalcrypt.jar rdj/CLUI --decrypt -k /dev/sdc1 -t myfile |
78 | 78 | |
79 | -FinalCrypt 5.6.5 - Author: Ron de Jong <info@finalcrypt.org> - Copyright: © 2017-2019 | |
\ No newline at end of file | ||
79 | +FinalCrypt 5.6.6 - Author: Ron de Jong <info@finalcrypt.org> - Copyright: © 2017-2019 | |
\ No newline at end of file |
@@ -8,7 +8,7 @@ application.homepage=http://www.finalcrypt.org/ | ||
8 | 8 | application.splash= |
9 | 9 | application.title=FinalCrypt |
10 | 10 | application.vendor=FinalCrypt |
11 | -application.implementation.version=5.6.5 | |
11 | +application.implementation.version=5.6.6 | |
12 | 12 | auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.expand-tabs=false |
13 | 13 | auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.indent-shift-width=4 |
14 | 14 | auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.spaces-per-tab=4 |
@@ -65,6 +65,8 @@ public class Audio | ||
65 | 65 | public static final String VOI_ENCRYPT_FILES = "/rdj/audio/voice/encrypt_files"; |
66 | 66 | public static final String VOI_ENCRYPTING_FILES = "/rdj/audio/voice/encrypting_files"; |
67 | 67 | public static final String VOI_ENCRYPT_OR_DECRYPT_FILES = "/rdj/audio/voice/encrypt_or_decrypt_files"; |
68 | + public static final String VOI_FINISHED_DECRYPTING = "/rdj/audio/voice/finished_decrypting"; | |
69 | + public static final String VOI_FINISHED_ENCRYPTING = "/rdj/audio/voice/finished_encrypting"; | |
68 | 70 | public static final String VOI_SCANNING_FILES = "/rdj/audio/voice/scanning_files"; |
69 | 71 | public static final String VOI_SELECT_FILES = "/rdj/audio/voice/select_files"; |
70 | 72 | public static final String VOI_SELECT_KEY = "/rdj/audio/voice/select_key"; |
@@ -446,7 +446,8 @@ public class FinalCrypt extends Thread | ||
446 | 446 | |
447 | 447 | ByteBuffer randomBuffer = ByteBuffer.allocate(bufferSize); randomBuffer.clear(); |
448 | 448 | |
449 | - ui.log(UTF8_CREATE_SYMBOL + UTF8_KEY_SYMBOL + " \"" + dynamicKeyFCPath.path.toAbsolutePath() + "\" ", true, false, false, false, false); | |
449 | +// ui.log(UTF8_CREATE_SYMBOL + UTF8_KEY_SYMBOL + " \"" + dynamicKeyFCPath.path.toAbsolutePath() + "\" ", true, false, false, false, false); | |
450 | + ui.log(UTF8_CREATE_SYMBOL + UTF8_KEY_SYMBOL + " \"" + targetDestinPath.toAbsolutePath().toString() + "\" ", true, false, false, false, false); | |
450 | 451 | ui.log(UTF8_CREATE_SYMBOL + UTF8_KEY_SYMBOL, false, true, true, false, false); |
451 | 452 | |
452 | 453 | write1loop: while ( (totalTranfered < ( newTargetSourceFCPath.size + FCPath.MAC_SIZE )) && (! inputEnded )) |
@@ -255,6 +255,9 @@ public class GUIFX extends Application implements UI, Initializable | ||
255 | 255 | private final String ENCRYPTING_FILES = "Encrypting Files"; |
256 | 256 | private final String DECRYPTING_FILES = "Decrypting Files"; |
257 | 257 | |
258 | + private final String FINISHED_ENCRYPTING = "Finished Encrypting"; | |
259 | + private final String FINISHED_DECRYPTING = "Finished Decrypting"; | |
260 | + | |
258 | 261 | private final String USER_GUID_TEXT_FILL_BASE = "#706050";// #5A2D0C #663B1B |
259 | 262 | private final String USER_GUID_TEXT_FILL_HIGH = "#BBBBBB"; |
260 | 263 |
@@ -1082,7 +1085,14 @@ public class GUIFX extends Application implements UI, Initializable | ||
1082 | 1085 | // ============================================================================================================================ |
1083 | 1086 | |
1084 | 1087 | |
1085 | - disableFileChoosers(false, true); | |
1088 | + if (System.getProperty("os.name").toLowerCase().indexOf("mac") == -1) // Again due to Mac OSX | |
1089 | + { | |
1090 | + disableFileChoosers(false, true, true); | |
1091 | + } | |
1092 | + else | |
1093 | + { | |
1094 | + disableFileChoosers(false, true, true); | |
1095 | + } | |
1086 | 1096 | |
1087 | 1097 | FadeTransition sysmonFadeTransition = new FadeTransition(Duration.millis(2000), sysMonCanvas); |
1088 | 1098 | sysmonFadeTransition.setFromValue(0.0f); |
@@ -1181,48 +1191,70 @@ public class GUIFX extends Application implements UI, Initializable | ||
1181 | 1191 | // alert.showAndWait(); |
1182 | 1192 | } |
1183 | 1193 | |
1184 | - private void disableFileChoosers(boolean param, boolean firsttime) | |
1194 | + private void disableFileChoosers(boolean param, boolean firsttime, boolean animated) | |
1185 | 1195 | { |
1186 | - if (param) // disable filechoosers | |
1196 | + if (! animated) | |
1187 | 1197 | { |
1188 | - keyFileSwingNode.setMouseTransparent(param); targetFileSwingNode.setMouseTransparent(param); | |
1189 | - | |
1190 | - Timeline disableTimeline = new Timeline | |
1191 | - ( | |
1192 | - new KeyFrame(Duration.ZERO, | |
1193 | - new KeyValue(keyFileFoil.opacityProperty(), 0.1), | |
1194 | - new KeyValue(targetFileFoil.opacityProperty(), 0.1)), | |
1195 | - new KeyFrame(Duration.seconds(1), | |
1196 | - new KeyValue(keyFileFoil.opacityProperty(), 0.5), | |
1197 | - new KeyValue(targetFileFoil.opacityProperty(), 0.5)) | |
1198 | - ); | |
1199 | - disableTimeline.setAutoReverse(false); | |
1200 | - disableTimeline.setOnFinished((ActionEvent actionEvent) -> { }); | |
1201 | - disableTimeline.play(); | |
1202 | - } | |
1203 | - else // enable filechoosers | |
1204 | - { | |
1205 | - Timeline enableTimeline = new Timeline | |
1206 | - ( | |
1207 | - new KeyFrame(Duration.ZERO, | |
1208 | - new KeyValue(keyFileFoil.opacityProperty(), 0.5), | |
1209 | - new KeyValue(targetFileFoil.opacityProperty(), 0.5)), | |
1210 | - new KeyFrame(Duration.seconds(1), | |
1211 | - new KeyValue(keyFileFoil.opacityProperty(), 0.1), | |
1212 | - new KeyValue(targetFileFoil.opacityProperty(), 0.1)) | |
1213 | - ); | |
1214 | - enableTimeline.setAutoReverse(false); | |
1215 | - enableTimeline.setOnFinished((ActionEvent actionEvent) -> | |
1198 | + if (param) // disable filechoosers | |
1216 | 1199 | { |
1217 | 1200 | keyFileSwingNode.setMouseTransparent(param); targetFileSwingNode.setMouseTransparent(param); |
1218 | - | |
1201 | + keyFileFoil.setOpacity(0.5); | |
1202 | + targetFileFoil.setOpacity(0.5); | |
1203 | + } | |
1204 | + else // enable filechoosers | |
1205 | + { | |
1206 | + keyFileSwingNode.setMouseTransparent(param); targetFileSwingNode.setMouseTransparent(param); | |
1207 | + keyFileFoil.setOpacity(0.1); | |
1208 | + targetFileFoil.setOpacity(0.1); | |
1219 | 1209 | if (firsttime) |
1220 | 1210 | { |
1221 | 1211 | // keyFileChooserPropertyCheck(); |
1222 | 1212 | } |
1223 | - }); | |
1224 | - enableTimeline.play(); | |
1213 | + } | |
1225 | 1214 | } |
1215 | + else | |
1216 | + { | |
1217 | + if (param) // disable filechoosers | |
1218 | + { | |
1219 | + keyFileSwingNode.setMouseTransparent(param); targetFileSwingNode.setMouseTransparent(param); | |
1220 | + | |
1221 | + Timeline disableTimeline = new Timeline | |
1222 | + ( | |
1223 | + new KeyFrame(Duration.ZERO, | |
1224 | + new KeyValue(keyFileFoil.opacityProperty(), 0.1), | |
1225 | + new KeyValue(targetFileFoil.opacityProperty(), 0.1)), | |
1226 | + new KeyFrame(Duration.seconds(1), | |
1227 | + new KeyValue(keyFileFoil.opacityProperty(), 0.5), | |
1228 | + new KeyValue(targetFileFoil.opacityProperty(), 0.5)) | |
1229 | + ); | |
1230 | + disableTimeline.setAutoReverse(false); | |
1231 | + disableTimeline.setOnFinished((ActionEvent actionEvent) -> { }); | |
1232 | + disableTimeline.play(); | |
1233 | + } | |
1234 | + else // enable filechoosers | |
1235 | + { | |
1236 | + Timeline enableTimeline = new Timeline | |
1237 | + ( | |
1238 | + new KeyFrame(Duration.ZERO, | |
1239 | + new KeyValue(keyFileFoil.opacityProperty(), 0.5), | |
1240 | + new KeyValue(targetFileFoil.opacityProperty(), 0.5)), | |
1241 | + new KeyFrame(Duration.seconds(1), | |
1242 | + new KeyValue(keyFileFoil.opacityProperty(), 0.1), | |
1243 | + new KeyValue(targetFileFoil.opacityProperty(), 0.1)) | |
1244 | + ); | |
1245 | + enableTimeline.setAutoReverse(false); | |
1246 | + enableTimeline.setOnFinished((ActionEvent actionEvent) -> | |
1247 | + { | |
1248 | + keyFileSwingNode.setMouseTransparent(param); targetFileSwingNode.setMouseTransparent(param); | |
1249 | + | |
1250 | + if (firsttime) | |
1251 | + { | |
1252 | + // keyFileChooserPropertyCheck(); | |
1253 | + } | |
1254 | + }); | |
1255 | + enableTimeline.play(); | |
1256 | + } | |
1257 | + } | |
1226 | 1258 | } |
1227 | 1259 | |
1228 | 1260 | synchronized public void userGuidanceMessage(String message, int fontsize, boolean bottomleft, boolean topleft, boolean topright, boolean bottomright, String audio, int media_Delay) |
@@ -1908,7 +1940,7 @@ public class GUIFX extends Application implements UI, Initializable | ||
1908 | 1940 | finalCrypt.setPwd(pwdField.getText()); finalCrypt.setPwdBytes(pwdField.getText()); finalCrypt.resetPwdPos(); finalCrypt.resetPwdBytesPos(); |
1909 | 1941 | |
1910 | 1942 | keyImageView.setOpacity(0.8); |
1911 | - filesProgressBar.setVisible(true); filesProgressBar.setProgress(ProgressBar.INDETERMINATE_PROGRESS); | |
1943 | + if ((targetPathList != null) && (targetPathList.size() > 0)) { filesProgressBar.setVisible(true); filesProgressBar.setProgress(ProgressBar.INDETERMINATE_PROGRESS); } | |
1912 | 1944 | |
1913 | 1945 | new Sound().play(this, Audio.SND_READY,Audio.AUDIO_CODEC); |
1914 | 1946 | userGuidanceMessage(SCANNING_FILES, 64, false, false, false, false, Voice.VOI_SCANNING_FILES, 0); |
@@ -2943,7 +2975,15 @@ public class GUIFX extends Application implements UI, Initializable | ||
2943 | 2975 | |
2944 | 2976 | processRunning = true; |
2945 | 2977 | |
2946 | - disableFileChoosers(true, false); | |
2978 | + if (System.getProperty("os.name").toLowerCase().indexOf("mac") == -1) // Again due to Mac OSX | |
2979 | + { | |
2980 | + disableFileChoosers(true, false, true); | |
2981 | + } | |
2982 | + else | |
2983 | + { | |
2984 | + disableFileChoosers(true, false, true); | |
2985 | + } | |
2986 | + | |
2947 | 2987 | |
2948 | 2988 | encryptButton.setDisable(true); |
2949 | 2989 | decryptButton.setDisable(true); |
@@ -3049,94 +3089,108 @@ public class GUIFX extends Application implements UI, Initializable | ||
3049 | 3089 | |
3050 | 3090 | @Override public void processFinished(FCPathList<FCPath> openFCPathList, boolean open) |
3051 | 3091 | { |
3052 | - Platform.runLater(() -> | |
3092 | + Platform.runLater(() -> | |
3053 | 3093 | { |
3054 | - new Sound().play(this, Audio.SND_SHUTDOWN,Audio.AUDIO_CODEC); | |
3094 | + fileProgressBar.setProgress(100.0); filesProgressBar.setProgress(100.0); | |
3055 | 3095 | |
3056 | - megaBytesPerSecond = 0; | |
3057 | - updateSystemMonitor(); | |
3058 | - | |
3059 | - // Clocks | |
3060 | -// if ((processRunningMode == ENCRYPT_MODE) || (processRunningMode == DECRYPT_MODE)) { UPDATE_CLOCKS_TIMELINE.stop(); } | |
3061 | - UPDATE_CLOCKS_TIMELINE.stop(); | |
3062 | - | |
3063 | - targetFCPathList = new FCPathList<FCPath>(); | |
3096 | + if ( processRunningMode == ENCRYPT_MODE ) { userGuidanceMessage(FINISHED_ENCRYPTING, 64, false, false, false, false, Voice.VOI_FINISHED_ENCRYPTING, 0); } | |
3097 | + if ( processRunningMode == DECRYPT_MODE ) { userGuidanceMessage(FINISHED_DECRYPTING, 64, false, false, false, false, Voice.VOI_FINISHED_DECRYPTING, 0); } | |
3064 | 3098 | |
3065 | - updateDashboard(targetFCPathList); | |
3066 | - | |
3067 | - disableFileChoosers(false, false); | |
3068 | - | |
3069 | - encryptButton.setDisable(true); | |
3070 | - decryptButton.setDisable(true); | |
3071 | - if ( keyFCPath.isValidKey ) | |
3099 | + Timeline timeline = new Timeline(new KeyFrame( Duration.millis(2000), ae -> | |
3072 | 3100 | { |
3073 | - pwdField.setDisable(false); | |
3074 | - if ((showPasswordCheckBox.isVisible()) && (pwdField.getText().length() == 0)) { passwordHeaderLabel.setText(PASSWORD_OPTIONAL); } else { passwordHeaderLabel.setText(PASSWORD_SET); } | |
3075 | - pwdtxtField.setDisable(false); | |
3076 | - keyImageView.setImage(KEY_FILE_IMAGE); | |
3077 | - keyImageView.setOpacity(0.8); | |
3078 | - } | |
3079 | - pauseToggleButton.setDisable(true); | |
3080 | - stopButton.setDisable(true); | |
3081 | - | |
3082 | -// keyButton.setDisable(false); | |
3083 | - | |
3084 | - fileProgressBar.setProgress(0); fileProgressBar.setVisible(false); | |
3085 | - filesProgressBar.setProgress(0); filesProgressBar.setVisible(false); | |
3086 | - | |
3087 | -// encryptionModeToggleButton.setMouseTransparent(!encryptionModeToggleButton.isMouseTransparent()); | |
3088 | -// encryptionModeAnchorPane.setMouseTransparent(!encryptionModeAnchorPane.isMouseTransparent()); | |
3089 | - | |
3090 | -// if (System.getProperty("os.name").toLowerCase().indexOf("mac") == -1) // Due to Mac OSX // to 2 | |
3091 | -// { | |
3092 | - if ( keyFCPath.isValidKeyDir ) { updateFileChoosers(true, true); } else { updateFileChoosers(true, false); } // if keyfile selected then NO update keyFileChooser keeping key file selected; processFinished() | |
3093 | -// } | |
3094 | - | |
3095 | - processRunningMode = NONE; | |
3096 | - processRunning = false; | |
3101 | + fileProgressBar.setVisible(false);filesProgressBar.setVisible(false); | |
3102 | + | |
3103 | + megaBytesPerSecond = 0; | |
3104 | + updateSystemMonitor(); | |
3097 | 3105 | |
3098 | - targetFCPathList = new FCPathList<FCPath>(); | |
3099 | - buildReady(targetFCPathList, false); | |
3106 | + // Clocks | |
3107 | + // if ((processRunningMode == ENCRYPT_MODE) || (processRunningMode == DECRYPT_MODE)) { UPDATE_CLOCKS_TIMELINE.stop(); } | |
3108 | + UPDATE_CLOCKS_TIMELINE.stop(); | |
3100 | 3109 | |
3101 | -// if (clockUpdated) | |
3102 | -// { | |
3103 | - remainingTimeLabel.setText("00:00:00"); | |
3104 | - totalTimeLabel.setText(elapsedTimeLabel.getText()); | |
3105 | -// } | |
3110 | + targetFCPathList = new FCPathList<FCPath>(); | |
3111 | + updateDashboard(targetFCPathList); | |
3112 | + | |
3113 | + encryptButton.setDisable(true); | |
3114 | + decryptButton.setDisable(true); | |
3115 | + if ( keyFCPath.isValidKey ) | |
3116 | + { | |
3117 | + pwdField.setDisable(false); | |
3118 | + if ((showPasswordCheckBox.isVisible()) && (pwdField.getText().length() == 0)) { passwordHeaderLabel.setText(PASSWORD_OPTIONAL); } else { passwordHeaderLabel.setText(PASSWORD_SET); } | |
3119 | + pwdtxtField.setDisable(false); | |
3120 | + keyImageView.setImage(KEY_FILE_IMAGE); | |
3121 | + keyImageView.setOpacity(0.8); | |
3122 | + } | |
3123 | + pauseToggleButton.setDisable(true); | |
3124 | + stopButton.setDisable(true); | |
3106 | 3125 | |
3107 | -// The Open selected file when finished section | |
3126 | + // keyButton.setDisable(false); | |
3108 | 3127 | |
3109 | - Thread openThread; | |
3110 | - openThread = new Thread(() -> | |
3111 | - { | |
3112 | - try { Thread.sleep(1000); } catch (InterruptedException ex) { } | |
3113 | - if (open) | |
3128 | + | |
3129 | + // encryptionModeToggleButton.setMouseTransparent(!encryptionModeToggleButton.isMouseTransparent()); | |
3130 | + // encryptionModeAnchorPane.setMouseTransparent(!encryptionModeAnchorPane.isMouseTransparent()); | |
3131 | + | |
3132 | + // if (System.getProperty("os.name").toLowerCase().indexOf("mac") == -1) // Due to Mac OSX // to 2 | |
3133 | + // { | |
3134 | + if ( keyFCPath.isValidKeyDir ) { updateFileChoosers(true, true); } else { updateFileChoosers(true, false); } // if keyfile selected then NO update keyFileChooser keeping key file selected; processFinished() | |
3135 | + // } | |
3136 | + | |
3137 | + processRunningMode = NONE; | |
3138 | + processRunning = false; | |
3139 | + | |
3140 | + targetFCPathList = new FCPathList<FCPath>(); | |
3141 | + buildReady(targetFCPathList, false); | |
3142 | + | |
3143 | + // if (clockUpdated) | |
3144 | + // { | |
3145 | + remainingTimeLabel.setText("00:00:00"); | |
3146 | + totalTimeLabel.setText(elapsedTimeLabel.getText()); | |
3147 | + // } | |
3148 | + | |
3149 | + // The Open selected file when finished section | |
3150 | + | |
3151 | + Thread openThread; | |
3152 | + openThread = new Thread(() -> | |
3114 | 3153 | { |
3115 | - for (Iterator fcPathIterator = openFCPathList.iterator(); fcPathIterator.hasNext();) | |
3154 | + try { Thread.sleep(1000); } catch (InterruptedException ex) { } | |
3155 | + if (open) | |
3116 | 3156 | { |
3117 | - FCPath openFCPath = (FCPath) fcPathIterator.next(); | |
3118 | - Path newPath = Paths.get(openFCPath.path.toAbsolutePath().toString().substring(0, openFCPath.path.toAbsolutePath().toString().lastIndexOf('.'))); | |
3157 | + for (Iterator fcPathIterator = openFCPathList.iterator(); fcPathIterator.hasNext();) | |
3158 | + { | |
3159 | + FCPath openFCPath = (FCPath) fcPathIterator.next(); | |
3160 | + Path newPath = Paths.get(openFCPath.path.toAbsolutePath().toString().substring(0, openFCPath.path.toAbsolutePath().toString().lastIndexOf('.'))); | |
3119 | 3161 | |
3120 | - new Sound().play(this, Audio.SND_OPEN,Audio.AUDIO_CODEC); | |
3121 | - try { Desktop.getDesktop().open(newPath.toFile()); } | |
3122 | - catch (IOException ex) { log("Error: Desktop.getDesktop().open(" + newPath.toFile().getAbsolutePath().toString() + "); " + ex.getMessage() + "\r\n", true, true, true, true, false); } | |
3162 | + new Sound().play(this, Audio.SND_OPEN,Audio.AUDIO_CODEC); | |
3163 | + try { Desktop.getDesktop().open(newPath.toFile()); } | |
3164 | + catch (IOException ex) { log("Error: Desktop.getDesktop().open(" + newPath.toFile().getAbsolutePath().toString() + "); " + ex.getMessage() + "\r\n", true, true, true, true, false); } | |
3123 | 3165 | |
3124 | - targetFCPathList = new FCPathList<FCPath>(); updateDashboard(targetFCPathList); | |
3125 | - Platform.runLater(new Runnable() | |
3126 | - { | |
3127 | - @Override public void run() | |
3166 | + targetFCPathList = new FCPathList<FCPath>(); updateDashboard(targetFCPathList); | |
3167 | + Platform.runLater(new Runnable() | |
3128 | 3168 | { |
3129 | - encryptButton.setDisable(true); | |
3130 | - decryptButton.setDisable(true); | |
3131 | -// keyButton.setDisable(true); keyButton.setTextFill(Color.GREY); keyButton.setText(CREATE_KEY); keyButton.setVisible(false); | |
3132 | - } | |
3133 | - }); | |
3169 | + @Override public void run() | |
3170 | + { | |
3171 | + encryptButton.setDisable(true); | |
3172 | + decryptButton.setDisable(true); | |
3173 | + // keyButton.setDisable(true); keyButton.setTextFill(Color.GREY); keyButton.setText(CREATE_KEY); keyButton.setVisible(false); | |
3174 | + } | |
3175 | + }); | |
3176 | + } | |
3134 | 3177 | } |
3178 | + }); | |
3179 | + openThread.setName("openThread"); | |
3180 | + openThread.setDaemon(true); | |
3181 | + openThread.start(); | |
3182 | + | |
3183 | + new Sound().play(this, Audio.SND_SHUTDOWN,Audio.AUDIO_CODEC); | |
3184 | + | |
3185 | + if (System.getProperty("os.name").toLowerCase().indexOf("mac") == -1) // Again due to Mac OSX | |
3186 | + { | |
3187 | + disableFileChoosers(false, false, true); | |
3135 | 3188 | } |
3136 | - }); | |
3137 | - openThread.setName("openThread"); | |
3138 | - openThread.setDaemon(true); | |
3139 | - openThread.start(); | |
3189 | + else | |
3190 | + { | |
3191 | + disableFileChoosers(false, false, true); | |
3192 | + } | |
3193 | + })); timeline.play(); | |
3140 | 3194 | }); |
3141 | 3195 | } |
3142 | 3196 |
@@ -3148,7 +3202,7 @@ public class GUIFX extends Application implements UI, Initializable | ||
3148 | 3202 | { |
3149 | 3203 | if (updateTargetFC) |
3150 | 3204 | { |
3151 | - Timeline timeline = new Timeline(new KeyFrame( Duration.millis(100), ae -> | |
3205 | + Timeline timeline = new Timeline(new KeyFrame( Duration.millis(500), ae -> | |
3152 | 3206 | { |
3153 | 3207 | // tgtFileChooser.rescanCurrentDirectory(); |
3154 | 3208 | tgtFileChooser.setFileFilter(keyFileChooser.getAcceptAllFileFilter()); |
@@ -3297,7 +3351,7 @@ public class GUIFX extends Application implements UI, Initializable | ||
3297 | 3351 | String platform = System.getProperty("os.name").toLowerCase(); // Due to a nasty JFileChooser focus issue on Mac |
3298 | 3352 | if ( platform.indexOf("mac") != -1 ) // if it is a mac |
3299 | 3353 | { |
3300 | - Timeline timeline = new Timeline(new KeyFrame( Duration.millis(100), ae -> | |
3354 | + Timeline timeline = new Timeline(new KeyFrame( Duration.millis(200), ae -> | |
3301 | 3355 | { |
3302 | 3356 | targetFileSwingNode.setContent(tgtFileChooser); // Delay setting this JFileChooser avoiding a simultanious key and target JFileChooser focus conflict causing focus to endlessly flipflop between the two JFileChoosers |
3303 | 3357 | tgtFileChooser.setVisible(false); tgtFileChooser.setVisible(true); keyFileChooser.setVisible(false); keyFileChooser.setVisible(true); // Reldraw FileChoosers |
@@ -46,8 +46,15 @@ public class Sound extends Audio | ||
46 | 46 | case MP3: media = new Media(ui.getClass().getResource(audio + ".mp3").toExternalForm()); break; |
47 | 47 | default: media = new Media(ui.getClass().getResource(audio + ".wav").toExternalForm()); break; |
48 | 48 | } |
49 | -// playJavaX(ui, media, audio_codec); // Stops playing spontaniously on all OSes | |
50 | - playJavaFX(ui, media, audio_codec); // Plays fast, but crashes often on Linux (libld.so native player issue) | |
49 | + | |
50 | + if ( | |
51 | + ((media.getSource().contains("sounds")) && ((sound_Is_Enabled))) | |
52 | + || ((media.getSource().contains("voice")) && ((voice_Is_Enabled))) | |
53 | + ) | |
54 | + { | |
55 | +// playJavaX(ui, media, audio_codec); // Stops playing spontaniously on all OSes | |
56 | + playJavaFX(ui, media, audio_codec); // Plays fast, but crashes often on Linux (libld.so native player issue) | |
57 | + } | |
51 | 58 | } |
52 | 59 | |
53 | 60 | synchronized public void playJavaX(UI ui, Media media, int audio_codec) // javax.sound.sampled.AudioSystem |
@@ -84,7 +84,10 @@ public class Support extends Application implements Initializable | ||
84 | 84 | |
85 | 85 | private void closeWindow() |
86 | 86 | { |
87 | - Stage stage = (Stage) facebookImageView.getScene().getWindow(); stage.close(); | |
87 | + Platform.runLater(() -> | |
88 | + { | |
89 | + Stage stage = (Stage) facebookImageView.getScene().getWindow(); stage.close(); | |
90 | + }); | |
88 | 91 | } |
89 | 92 | |
90 | 93 | public static void main(String[] args) |
@@ -102,6 +105,7 @@ public class Support extends Application implements Initializable | ||
102 | 105 | try { Desktop.getDesktop().browse(new URI("https://www.facebook.com/share.php?u=http://www.finalcrypt.org/")); prefs.put("Shared", "Yes"); } |
103 | 106 | catch (URISyntaxException ex) { guifx.log("Error: URISyntaxException: Desktop.getDesktop().open(file); " + ex.getMessage() + "\r\n", true, true, true, true, false); } |
104 | 107 | catch (IOException ex) { guifx.log("Error: IOException: Desktop.getDesktop().open(file); " + ex.getMessage() + "\r\n", true, true, true, true, false); } |
108 | + closeWindow(); | |
105 | 109 | }); |
106 | 110 | shareThread.setName("shareThread"); |
107 | 111 | shareThread.setDaemon(true); |
@@ -117,6 +121,7 @@ public class Support extends Application implements Initializable | ||
117 | 121 | try { Desktop.getDesktop().browse(new URI("https://twitter.com/share?original_referer=/&text=FinalCrypt%20-%20THE%20WORLD'S%20MOST%20UNBREAKABLE%20ENCRYPTION&url=http://www.finalcrypt.org/")); prefs.put("Shared", "Yes"); } |
118 | 122 | catch (URISyntaxException ex) { guifx.log("Error: URISyntaxException: Desktop.getDesktop().open(file); " + ex.getMessage() + "\r\n", true, true, true, true, false); } |
119 | 123 | catch (IOException ex) { guifx.log("Error: IOException: Desktop.getDesktop().open(file); " + ex.getMessage() + "\r\n", true, true, true, true, false); } |
124 | + closeWindow(); | |
120 | 125 | }); |
121 | 126 | shareThread.setName("shareThread"); |
122 | 127 | shareThread.setDaemon(true); |
@@ -132,6 +137,7 @@ public class Support extends Application implements Initializable | ||
132 | 137 | try { Desktop.getDesktop().browse(new URI("https://www.linkedin.com/cws/share?url=http://www.finalcrypt.org/")); prefs.put("Shared", "Yes"); } |
133 | 138 | catch (URISyntaxException ex) { guifx.log("Error: URISyntaxException: Desktop.getDesktop().open(file); " + ex.getMessage() + "\r\n", true, true, true, true, false); } |
134 | 139 | catch (IOException ex) { guifx.log("Error: IOException: Desktop.getDesktop().open(file); " + ex.getMessage() + "\r\n", true, true, true, true, false); } |
140 | + closeWindow(); | |
135 | 141 | }); |
136 | 142 | shareThread.setName("shareThread"); |
137 | 143 | shareThread.setDaemon(true); |
@@ -147,6 +153,7 @@ public class Support extends Application implements Initializable | ||
147 | 153 | try { Desktop.getDesktop().browse(new URI("http://pinterest.com/pin/create/button/?url=http://www.finalcrypt.org/&media=http://www.finalcrypt.org/FinalCrypt_Encrypt.png&description=Free%20File%20Encryption")); prefs.put("Shared", "Yes"); } |
148 | 154 | catch (URISyntaxException ex) { guifx.log("Error: URISyntaxException: Desktop.getDesktop().open(file); " + ex.getMessage() + "\r\n", true, true, true, true, false); } |
149 | 155 | catch (IOException ex) { guifx.log("Error: IOException: Desktop.getDesktop().open(file); " + ex.getMessage() + "\r\n", true, true, true, true, false); } |
156 | + closeWindow(); | |
150 | 157 | }); |
151 | 158 | shareThread.setName("shareThread"); |
152 | 159 | shareThread.setDaemon(true); |
@@ -160,6 +167,7 @@ public class Support extends Application implements Initializable | ||
160 | 167 | Thread shareThread; shareThread = new Thread(() -> |
161 | 168 | { |
162 | 169 | Version.openWebSite(guifx); |
170 | + closeWindow(); | |
163 | 171 | }); |
164 | 172 | shareThread.setName("shareThread"); |
165 | 173 | shareThread.setDaemon(true); |
@@ -1 +1 @@ | ||
1 | -5.6.5 | |
\ No newline at end of file | ||
1 | +5.6.6 | |
\ No newline at end of file |
@@ -1,4 +1,4 @@ | ||
1 | -[Version] = {5.6.5} | |
1 | +[Version] = {5.6.6} | |
2 | 2 | [] = {} ================================================================ |
3 | 3 | [Release Notes] = {You are using a very old version of FinalCrypt} |
4 | 4 | [Release Message] = {Please visit the website and download the latest} |
@@ -19,15 +19,11 @@ | ||
19 | 19 | [Upgrade Notes] = {Brute Force only works on the Command Line Interface} |
20 | 20 | [Upgrade Notes] = {} |
21 | 21 | [] = {} ---------------------------------------------------------------- |
22 | -[Update Notes] = {Update 5} | |
22 | +[Update Notes] = {Update 6} | |
23 | 23 | [Update Notes] = {} |
24 | -[Update Notes] = {Fixed Brute Force Dict-Size, Heap-Mem & Performance} | |
25 | -[Update Notes] = {} | |
26 | -[Update Notes] = {This update provides:} | |
27 | -[Update Notes] = {} | |
28 | -[Update Notes] = {Out of heapmem bugfix using a large dictionary file} | |
29 | -[Update Notes] = {Buffered loading of limitless sized dictionary file} | |
30 | -[Update Notes] = {Better Multitasking with sliced up dictionary files} | |
24 | +[Update Notes] = {Improved Apple OSX stability FinalCrypt User Interface} | |
25 | +[Update Notes] = {Support Window now closes on Home / Share button click} | |
26 | +[Update Notes] = {No longer printing keypaths on statusbar creating keys} | |
31 | 27 | [] = {} -------------------------------------------------------------------------------------------------------- |
32 | 28 | [Alert Subject_] = {} |
33 | 29 | [Alert Notes_] = {} |