From 900ee58f1b21ec3f8c1427cfac3a49389fd00327 Mon Sep 17 00:00:00 2001 From: "honfika@gmail.com" Date: Sat, 6 Jun 2015 19:22:14 +0200 Subject: [PATCH] exe export modes (not ready yet) --- .../flash/configuration/Configuration.java | 99 ++++++++++++++++++- .../flash/exporters/modes/ExeExportMode.java | 27 +++++ .../decompiler/flash/gui/SaveFileMode.java | 6 +- .../locales/AdvancedSettingsDialog.properties | 3 + .../AdvancedSettingsDialog_hu.properties | 3 + .../flash/gui/locales/MainFrame.properties | 3 + .../flash/gui/locales/MainFrame_hu.properties | 3 + 7 files changed, 136 insertions(+), 8 deletions(-) create mode 100644 libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/modes/ExeExportMode.java diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java index 1d770a11b..f49f6b248 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java @@ -17,9 +17,11 @@ package com.jpexs.decompiler.flash.configuration; import com.jpexs.decompiler.flash.ApplicationInfo; +import com.jpexs.decompiler.flash.exporters.modes.ExeExportMode; import com.jpexs.decompiler.flash.helpers.CodeFormatting; import com.jpexs.decompiler.flash.importers.TextImportResizeTextBoundsMode; import com.jpexs.helpers.Helper; +import com.jpexs.helpers.utf8.Utf8Helper; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; @@ -32,6 +34,10 @@ import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; +import java.net.InetSocketAddress; +import java.net.Proxy; +import java.net.URL; +import java.net.URLConnection; import java.security.AccessController; import java.security.PrivilegedAction; import java.util.ArrayList; @@ -46,6 +52,8 @@ import java.util.Map; import java.util.Map.Entry; import java.util.logging.Level; import java.util.logging.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import javax.swing.JOptionPane; /** @@ -296,6 +304,10 @@ public class Configuration { @ConfigurationCategory("export") public static final ConfigurationItem saveAsExeScaleMode = null; + @ConfigurationDefaultInt(3) + @ConfigurationCategory("export") + public static final ConfigurationItem exeExportMode = null; + @ConfigurationDefaultInt(1024 * 1024/*1MiB*/) @ConfigurationCategory("limit") public static final ConfigurationItem syntaxHighlightLimit = null; @@ -782,16 +794,93 @@ public class Configuration { return count; } - public static File getFlashLibPath() { + public static File getPath(String folder) { String home = getFFDecHome(); - File libsdir = new File(home + "flashlib"); - if (!libsdir.exists()) { - libsdir.mkdirs(); + File dir = new File(home + folder); + if (!dir.exists()) { + dir.mkdirs(); } - return libsdir; + return dir; + } + + public static File getFlashLibPath() { + return getPath("flashlib"); + } + + public static File getProjectorPath() { + return getPath("projector"); + } + + private static byte[] downloadsUrl(String urlString) throws IOException { + String proxyAddress = Configuration.updateProxyAddress.get(); + URL url = new URL(urlString); + + URLConnection uc = null; + if (proxyAddress != null && !proxyAddress.isEmpty()) { + int port = 8080; + if (proxyAddress.contains(":")) { + String[] parts = proxyAddress.split(":"); + port = Integer.parseInt(parts[1]); + proxyAddress = parts[0]; + } + + uc = url.openConnection(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyAddress, port))); + } else { + uc = url.openConnection(); + } + uc.setRequestProperty("User-Agent", ApplicationInfo.shortApplicationVerName); + + uc.connect(); + + return Helper.readStream(uc.getInputStream()); + } + + private static String getDownloadsHtml() throws IOException { + byte[] data = downloadsUrl("https://www.adobe.com/support/flashplayer/downloads.html"); + String html = new String(data, Utf8Helper.charset); + return html; + } + + private static String getUrlFromDownloadsHtml(String urlPatternString) { + try { + String html = getDownloadsHtml(); + Pattern urlPattern = Pattern.compile(urlPatternString, Pattern.DOTALL); + Matcher matcher = urlPattern.matcher(html); + if (matcher.matches()) { + String url = matcher.group(1); + int a = url.length(); + return url; + } + + return null; + } catch (IOException ex) { + Logger.getLogger(Configuration.class.getName()).log(Level.SEVERE, null, ex); + return null; + } + } + + private static String getLatestPlayerGlobalUrl() { + return getUrlFromDownloadsHtml(".*. */ diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties index 9072a1c4a..c6c03030d 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties @@ -356,3 +356,6 @@ config.description.cacheImages = Cache the decoded image objects config.name.swfSpecificConfigs = SWF specific configurations config.description.swfSpecificConfigs = Contains the SWF specific configurations + +config.name.exeExportMode = EXE export mode +config.description.exeExportMode = EXE export mode diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_hu.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_hu.properties index 838fa6d46..0ae7da5c0 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_hu.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_hu.properties @@ -356,3 +356,6 @@ config.description.cacheImages = A dek\u00f3dolt k\u00e9peket gyors\u00edt\u00f3 config.name.swfSpecificConfigs = SWF specifikus be\u00e1llt\u00e1sok config.description.swfSpecificConfigs = Az SWF specifikus be\u00e1llt\u00e1sokat tartalmazza + +config.name.exeExportMode = EXE export m\u00f3d +config.description.exeExportMode = EXE export m\u00f3d diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties index 5774d0dbf..b37c480b4 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties @@ -617,3 +617,6 @@ tagInfo.exportFormat = Export Format tagInfo.samplingRate = Sampling Rate tagInfo.stereo = Stereo tagInfo.sampleCount = Sample Count + +filter.dmg = Mac Executable files (*.dmg) +filter.linuxExe = Linux Executable files diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_hu.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_hu.properties index 9df945f87..6048ba5d5 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_hu.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_hu.properties @@ -616,3 +616,6 @@ tagInfo.exportFormat = Export\u00e1l\u00e1si form\u00e1tum tagInfo.samplingRate = Mintav\u00e9telez\u00e9si frekvencia tagInfo.stereo = Sztere\u00f3 tagInfo.sampleCount = Mint\u00e1k sz\u00e1ma + +filter.dmg = Mac futtathat\u00f3 f\u00e1jlok (*.dmg) +filter.linuxExe = Linux futtathat\u00f3 f\u00e1jlok