diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java index bbf3f650c..6e537f6bb 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java @@ -352,7 +352,7 @@ public final class SWF implements SWFContainerItem, Timelined { di.getChildInfos().clear(); } - + public Map getCharacters() { if (characters == null) { synchronized (this) { @@ -1259,7 +1259,6 @@ public final class SWF implements SWFContainerItem, Timelined { if (!outdir.endsWith(File.separator)) { outdir += File.separator; } - outdir += "scripts" + File.separator; ret.addAll(new AS2ScriptExporter().exportAS2ScriptsTimeout(handler, outdir, getASMs(true), exportSettings, evl)); return ret; @@ -1941,7 +1940,7 @@ public final class SWF implements SWFContainerItem, Timelined { cnt++; informListeners("rename", "class " + cnt + "/" + classCount); DoInitActionTag dia = (DoInitActionTag) t; - String exportName = characters.containsKey(dia.spriteId)?characters.get(dia.spriteId).getExportName():"_unk_"; + String exportName = characters.containsKey(dia.spriteId) ? characters.get(dia.spriteId).getExportName() : "_unk_"; final String pkgPrefix = "__Packages."; String[] classNameParts = null; if ((exportName != null) && exportName.startsWith(pkgPrefix)) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/ScriptPack.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/ScriptPack.java index db7874997..89fa5f584 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/ScriptPack.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/ScriptPack.java @@ -29,6 +29,7 @@ import com.jpexs.decompiler.flash.helpers.NulWriter; import com.jpexs.decompiler.flash.treeitems.AS3ClassTreeItem; import com.jpexs.helpers.CancellableWorker; import com.jpexs.helpers.Helper; +import com.jpexs.helpers.Path; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; @@ -188,22 +189,21 @@ public class ScriptPack extends AS3ClassTreeItem { } public File export(String directory, ScriptExportSettings exportSettings, boolean parallel) throws IOException { - String scriptName = getPathScriptName(); - String packageName = getPathPackage(); - File outDir = new File(directory + File.separatorChar + "scripts" + File.separatorChar + makeDirPath(packageName)); - if (!outDir.exists()) { - if (!outDir.mkdirs()) { - if (!outDir.exists()) { - throw new IOException("cannot create directory " + outDir); - } - } - } - String fileName = outDir.toString() + File.separator + Helper.makeFileName(scriptName) + ".as"; + File file = null; - File file = new File(fileName); - try (FileTextWriter writer = new FileTextWriter(Configuration.getCodeFormatting(), new FileOutputStream(file))) { + if (!exportSettings.singleFile) { + String scriptName = getPathScriptName(); + String packageName = getPathPackage(); + File outDir = new File(directory + File.separatorChar + makeDirPath(packageName)); + Path.createDirectorySafe(outDir); + String fileName = outDir.toString() + File.separator + Helper.makeFileName(scriptName) + ".as"; + file = new File(fileName); + } + + try (FileTextWriter writer = exportSettings.singleFile ? null : new FileTextWriter(Configuration.getCodeFormatting(), new FileOutputStream(file))) { try { - toSource(writer, abc.script_info.get(scriptIndex).traits.traits, exportSettings.mode, parallel); + FileTextWriter writer2 = exportSettings.singleFile ? exportSettings.singleFileWriter : writer; + toSource(writer2, abc.script_info.get(scriptIndex).traits.traits, exportSettings.mode, parallel); } catch (InterruptedException ex) { Logger.getLogger(ScriptPack.class.getName()).log(Level.SEVERE, null, ex); } @@ -248,6 +248,4 @@ public class ScriptPack extends AS3ClassTreeItem { public boolean isModified() { return abc.script_info.get(scriptIndex).isModified(); } - - } 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 22bf8dde4..d202a8e30 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 @@ -329,6 +329,10 @@ public class Configuration { @ConfigurationCategory("export") public static final ConfigurationItem textExportSingleFile = null; + @ConfigurationDefaultBoolean(false) + @ConfigurationCategory("export") + public static final ConfigurationItem scriptExportSingleFile = null; + @ConfigurationDefaultString("--- SEPARATOR ---") @ConfigurationCategory("export") public static final ConfigurationItem textExportSingleFileSeparator = null; @@ -420,8 +424,7 @@ public class Configuration { @ConfigurationDefaultBoolean(false) @ConfigurationCategory("ui") public static final ConfigurationItem saveSessionOnExit = null; - - + @ConfigurationDefaultBoolean(true) @ConfigurationCategory("ui") public static final ConfigurationItem allowOnlyOneInstance = null; @@ -760,6 +763,4 @@ public class Configuration { return null; } - - } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/BinaryDataExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/BinaryDataExporter.java index 04425cd09..9777a16bf 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/BinaryDataExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/BinaryDataExporter.java @@ -23,6 +23,7 @@ import com.jpexs.decompiler.flash.RunnableIOEx; import com.jpexs.decompiler.flash.exporters.settings.BinaryDataExportSettings; import com.jpexs.decompiler.flash.tags.DefineBinaryDataTag; import com.jpexs.decompiler.flash.tags.Tag; +import com.jpexs.helpers.Path; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -40,14 +41,9 @@ public class BinaryDataExporter { if (tags.isEmpty()) { return ret; } + File foutdir = new File(outdir); - if (!foutdir.exists()) { - if (!foutdir.mkdirs()) { - if (!foutdir.exists()) { - throw new IOException("Cannot create directory " + outdir); - } - } - } + Path.createDirectorySafe(foutdir); int count = 0; for (Tag t : tags) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FontExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FontExporter.java index f59b40f6e..6297a076b 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FontExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FontExporter.java @@ -34,6 +34,7 @@ import com.jpexs.decompiler.flash.tags.base.FontTag; import com.jpexs.decompiler.flash.types.ColorTransform; import com.jpexs.decompiler.flash.types.SHAPE; import com.jpexs.helpers.Helper; +import com.jpexs.helpers.Path; import fontastic.FGlyph; import fontastic.FPoint; import fontastic.Fontastic; @@ -58,14 +59,9 @@ public class FontExporter { if (tags.isEmpty()) { return ret; } + File foutdir = new File(outdir); - if (!foutdir.exists()) { - if (!foutdir.mkdirs()) { - if (!foutdir.exists()) { - throw new IOException("Cannot create directory " + outdir); - } - } - } + Path.createDirectorySafe(foutdir); int count = 0; for (Tag t : tags) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FrameExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FrameExporter.java index 8821841cd..94097003c 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FrameExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FrameExporter.java @@ -52,6 +52,7 @@ import com.jpexs.decompiler.flash.types.filters.GLOWFILTER; import com.jpexs.decompiler.flash.types.filters.GRADIENTBEVELFILTER; import com.jpexs.decompiler.flash.types.filters.GRADIENTGLOWFILTER; import com.jpexs.helpers.Helper; +import com.jpexs.helpers.Path; import com.jpexs.helpers.utf8.Utf8Helper; import gnu.jpdf.PDFJob; import java.awt.Color; @@ -110,13 +111,7 @@ public class FrameExporter { } final File foutdir = new File(outdir + path); - if (!foutdir.exists()) { - if (!foutdir.mkdirs()) { - if (!foutdir.exists()) { - throw new IOException("Cannot create directory " + outdir); - } - } - } + Path.createDirectorySafe(foutdir); final List fframes = frames; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/ImageExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/ImageExporter.java index 784faecb0..ec2263143 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/ImageExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/ImageExporter.java @@ -27,6 +27,7 @@ import com.jpexs.decompiler.flash.helpers.ImageHelper; import com.jpexs.decompiler.flash.tags.Tag; import com.jpexs.decompiler.flash.tags.base.ImageTag; import com.jpexs.helpers.Helper; +import com.jpexs.helpers.Path; import java.io.File; import java.io.IOException; import java.util.ArrayList; @@ -44,14 +45,9 @@ public class ImageExporter { if (tags.isEmpty()) { return ret; } + File foutdir = new File(outdir); - if (!foutdir.exists()) { - if (!foutdir.mkdirs()) { - if (!foutdir.exists()) { - throw new IOException("Cannot create directory " + outdir); - } - } - } + Path.createDirectorySafe(foutdir); int count = 0; for (Tag t : tags) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/MorphShapeExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/MorphShapeExporter.java index 80ba257c7..a5747ddb4 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/MorphShapeExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/MorphShapeExporter.java @@ -32,6 +32,7 @@ import com.jpexs.decompiler.flash.tags.base.CharacterTag; import com.jpexs.decompiler.flash.tags.base.MorphShapeTag; import com.jpexs.decompiler.flash.types.CXFORMWITHALPHA; import com.jpexs.helpers.Helper; +import com.jpexs.helpers.Path; import com.jpexs.helpers.utf8.Utf8Helper; import java.io.ByteArrayOutputStream; import java.io.File; @@ -54,14 +55,9 @@ public class MorphShapeExporter { if (tags.isEmpty()) { return ret; } + File foutdir = new File(outdir); - if (!foutdir.exists()) { - if (!foutdir.mkdirs()) { - if (!foutdir.exists()) { - throw new IOException("Cannot create directory " + outdir); - } - } - } + Path.createDirectorySafe(foutdir); int count = 0; for (Tag t : tags) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/MovieExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/MovieExporter.java index dcd8e1584..1c04db5b9 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/MovieExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/MovieExporter.java @@ -32,6 +32,7 @@ import com.jpexs.decompiler.flash.tags.DefineVideoStreamTag; import com.jpexs.decompiler.flash.tags.Tag; import com.jpexs.decompiler.flash.tags.VideoFrameTag; import com.jpexs.helpers.Helper; +import com.jpexs.helpers.Path; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; @@ -52,14 +53,9 @@ public class MovieExporter { if (tags.isEmpty()) { return ret; } + File foutdir = new File(outdir); - if (!foutdir.exists()) { - if (!foutdir.mkdirs()) { - if (!foutdir.exists()) { - throw new IOException("Cannot create directory " + outdir); - } - } - } + Path.createDirectorySafe(foutdir); int count = 0; for (Tag t : tags) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/ShapeExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/ShapeExporter.java index e6a74eaab..d8527b9c0 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/ShapeExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/ShapeExporter.java @@ -37,6 +37,7 @@ import com.jpexs.decompiler.flash.types.CXFORMWITHALPHA; import com.jpexs.decompiler.flash.types.RECT; import com.jpexs.decompiler.flash.types.SHAPE; import com.jpexs.helpers.Helper; +import com.jpexs.helpers.Path; import com.jpexs.helpers.SerializableImage; import com.jpexs.helpers.utf8.Utf8Helper; import java.io.ByteArrayOutputStream; @@ -59,14 +60,9 @@ public class ShapeExporter { if (tags.isEmpty()) { return ret; } + File foutdir = new File(outdir); - if (!foutdir.exists()) { - if (!foutdir.mkdirs()) { - if (!foutdir.exists()) { - throw new IOException("Cannot create directory " + outdir); - } - } - } + Path.createDirectorySafe(foutdir); int count = 0; for (Tag t : tags) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/SoundExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/SoundExporter.java index 7c5fee4bc..e12ac8ccd 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/SoundExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/SoundExporter.java @@ -34,6 +34,7 @@ import com.jpexs.decompiler.flash.tags.base.SoundStreamHeadTypeTag; import com.jpexs.decompiler.flash.tags.base.SoundTag; import com.jpexs.decompiler.flash.types.sound.SoundFormat; import com.jpexs.helpers.Helper; +import com.jpexs.helpers.Path; import java.io.BufferedOutputStream; import java.io.ByteArrayOutputStream; import java.io.File; @@ -55,14 +56,9 @@ public class SoundExporter { if (tags.isEmpty()) { return ret; } + File foutdir = new File(outdir); - if (!foutdir.exists()) { - if (!foutdir.mkdirs()) { - if (!foutdir.exists()) { - throw new IOException("Cannot create directory " + outdir); - } - } - } + Path.createDirectorySafe(foutdir); int count = 0; for (Tag t : tags) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/SymbolClassExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/SymbolClassExporter.java index de940dc2a..3d2f79c7d 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/SymbolClassExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/SymbolClassExporter.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.tags.ExportAssetsTag; import com.jpexs.decompiler.flash.tags.SymbolClassTag; import com.jpexs.decompiler.flash.tags.Tag; import com.jpexs.helpers.Helper; +import com.jpexs.helpers.Path; import com.jpexs.helpers.utf8.Utf8OutputStreamWriter; import java.io.BufferedWriter; import java.io.File; @@ -52,13 +53,7 @@ public class SymbolClassExporter { } File foutdir = new File(outdir); - if (!foutdir.exists()) { - if (!foutdir.mkdirs()) { - if (!foutdir.exists()) { - throw new IOException("Cannot create directory " + outdir); - } - } - } + Path.createDirectorySafe(foutdir); final File file = new File(outdir + File.separator + SYMBOL_CLASS_EXPORT_FILENAME); try (Writer writer = new BufferedWriter(new Utf8OutputStreamWriter(new FileOutputStream(file)))) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/TextExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/TextExporter.java index cb04b35d0..f3eba4000 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/TextExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/TextExporter.java @@ -54,14 +54,9 @@ public class TextExporter { if (tags.isEmpty()) { return ret; } + File foutdir = new File(outdir); - if (!foutdir.exists()) { - if (!foutdir.mkdirs()) { - if (!foutdir.exists()) { - throw new IOException("Cannot create directory " + outdir); - } - } - } + Path.createDirectorySafe(foutdir); int count = 0; for (Tag t : tags) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/script/AS2ScriptExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/script/AS2ScriptExporter.java index f17502353..e555cf3f1 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/script/AS2ScriptExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/script/AS2ScriptExporter.java @@ -27,6 +27,7 @@ import com.jpexs.decompiler.flash.tags.base.ASMSource; import com.jpexs.decompiler.graph.TranslateException; import com.jpexs.helpers.CancellableWorker; import com.jpexs.helpers.Helper; +import com.jpexs.helpers.Path; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -112,13 +113,8 @@ public class AS2ScriptExporter { try { int currentIndex = index.getAndIncrement(); - File dir = new File(outdir); - if (!dir.exists()) { - if (!dir.mkdirs()) { - if (!dir.exists()) { - throw new IOException("Cannot create directory " + outdir); - } - } + if (!exportSettings.singleFile) { + Path.createDirectorySafe(new File(outdir)); } String f = outdir + name + ".as"; @@ -129,20 +125,21 @@ public class AS2ScriptExporter { long startTime = System.currentTimeMillis(); File file = new File(f); - try (FileTextWriter writer = new FileTextWriter(Configuration.getCodeFormatting(), new FileOutputStream(f))) { + try (FileTextWriter writer = exportSettings.singleFile ? null : new FileTextWriter(Configuration.getCodeFormatting(), new FileOutputStream(f))) { + FileTextWriter writer2 = exportSettings.singleFile ? exportSettings.singleFileWriter : writer; ScriptExportMode exportMode = exportSettings.mode; if (exportMode == ScriptExportMode.HEX) { - asm.getActionSourcePrefix(writer); - asm.getActionBytesAsHex(writer); - asm.getActionSourceSuffix(writer); + asm.getActionSourcePrefix(writer2); + asm.getActionBytesAsHex(writer2); + asm.getActionSourceSuffix(writer2); } else if (exportMode != ScriptExportMode.AS) { - asm.getActionSourcePrefix(writer); - asm.getASMSource(exportMode, writer, null); - asm.getActionSourceSuffix(writer); + asm.getActionSourcePrefix(writer2); + asm.getASMSource(exportMode, writer2, null); + asm.getActionSourceSuffix(writer2); } else { List as = asm.getActions(); Action.setActionsAddresses(as, 0); - Action.actionsToSource(asm, as, ""/*FIXME*/, writer); + Action.actionsToSource(asm, as, ""/*FIXME*/, writer2); } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/settings/ScriptExportSettings.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/settings/ScriptExportSettings.java index 6c332feda..b5b99ca9c 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/settings/ScriptExportSettings.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/settings/ScriptExportSettings.java @@ -17,6 +17,7 @@ package com.jpexs.decompiler.flash.exporters.settings; import com.jpexs.decompiler.flash.exporters.modes.ScriptExportMode; +import com.jpexs.decompiler.flash.helpers.FileTextWriter; /** * @@ -28,6 +29,8 @@ public class ScriptExportSettings { public boolean singleFile; + public FileTextWriter singleFileWriter; + public ScriptExportSettings(ScriptExportMode mode, boolean singleFile) { this.mode = mode; this.singleFile = singleFile; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/CharacterIdTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/CharacterIdTag.java index 399975511..34c2ba75f 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/CharacterIdTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/CharacterIdTag.java @@ -16,18 +16,11 @@ */ package com.jpexs.decompiler.flash.tags.base; -import com.jpexs.decompiler.flash.SWF; -import com.jpexs.decompiler.flash.tags.Tag; -import com.jpexs.helpers.ByteArrayRange; - /** * * @author JPEXS */ public interface CharacterIdTag { - - public int getCharacterId(); - } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/XFLConverter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/XFLConverter.java index fe4e0c490..8ca08bf49 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/XFLConverter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/XFLConverter.java @@ -103,6 +103,7 @@ import com.jpexs.decompiler.flash.types.shaperecords.StyleChangeRecord; import com.jpexs.decompiler.flash.types.sound.MP3FRAME; import com.jpexs.decompiler.flash.types.sound.MP3SOUNDDATA; import com.jpexs.decompiler.flash.types.sound.SoundFormat; +import com.jpexs.helpers.Path; import com.jpexs.helpers.SerializableImage; import com.jpexs.helpers.utf8.Utf8Helper; import java.awt.Font; @@ -2675,13 +2676,7 @@ public class XFLConverter { } File file = new File(outfile); File outDir = file.getParentFile(); - if (!outDir.exists()) { - if (!outDir.mkdirs()) { - if (!outDir.exists()) { - throw new IOException("cannot create directory " + outDir); - } - } - } + Path.createDirectorySafe(outDir); StringBuilder domDocument = new StringBuilder(); String baseName = swfFileName; File f = new File(baseName); @@ -2733,9 +2728,9 @@ public class XFLConverter { DefineSpriteTag sprite = (DefineSpriteTag) characters.get(chid); if (sprite.subTags.isEmpty()) { String data = convertActionScript(dia); - CharacterTag spr=dia.getSwf().getCharacter(dia.spriteId); - String expName = spr!=null?spr.getExportName():"_unk_"; - + CharacterTag spr = dia.getSwf().getCharacter(dia.spriteId); + String expName = spr != null ? spr.getExportName() : "_unk_"; + String expPath = spr.getExportName(); final String prefix = "__Packages."; if (expPath.startsWith(prefix)) { @@ -2748,13 +2743,7 @@ public class XFLConverter { } expPath = expPath.replace(".", File.separator); File cdir = new File(outDir.getAbsolutePath() + File.separator + expDir); - if (!cdir.exists()) { - if (!cdir.mkdirs()) { - if (!cdir.exists()) { - throw new IOException("cannot create directory " + cdir); - } - } - } + Path.createDirectorySafe(cdir); writeFile(handler, Utf8Helper.getBytes(data), outDir.getAbsolutePath() + File.separator + expPath + ".as"); } } @@ -3021,14 +3010,7 @@ public class XFLConverter { }, handler).run(); } else { - - if (!outDir.exists()) { - if (!outDir.mkdirs()) { - if (!outDir.exists()) { - throw new IOException("cannot create directory " + outDir); - } - } - } + Path.createDirectorySafe(outDir); writeFile(handler, Utf8Helper.getBytes(domDocumentStr), outDir.getAbsolutePath() + File.separator + "DOMDocument.xml"); writeFile(handler, Utf8Helper.getBytes(publishSettingsStr), outDir.getAbsolutePath() + File.separator + "PublishSettings.xml"); File libraryDir = new File(outDir.getAbsolutePath() + File.separator + "LIBRARY"); @@ -3046,7 +3028,7 @@ public class XFLConverter { if (useAS3) { try { ScriptExportSettings scriptExportSettings = new ScriptExportSettings(ScriptExportMode.AS, false); - swf.exportActionScript(handler, outDir.getAbsolutePath(), scriptExportSettings, parallel, null); + swf.exportActionScript(handler, Path.combine(outDir.getAbsolutePath(), "scripts"), scriptExportSettings, parallel, null); } catch (Exception ex) { Logger.getLogger(XFLConverter.class.getName()).log(Level.SEVERE, "Error during ActionScript3 export", ex); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/helpers/Path.java b/libsrc/ffdec_lib/src/com/jpexs/helpers/Path.java index 2395c3a9e..f39ac5651 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/helpers/Path.java +++ b/libsrc/ffdec_lib/src/com/jpexs/helpers/Path.java @@ -1,21 +1,23 @@ /* * Copyright (C) 2010-2015 JPEXS, All rights reserved. - * + * * 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 3.0 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. */ + * License along with this library. + */ package com.jpexs.helpers; import java.io.File; +import java.io.IOException; /** * @@ -26,15 +28,21 @@ public class Path { public static String combine(String... paths) { String result = ""; String separator = File.separator; - for (String path : paths) { - if (path.startsWith(separator)) { - result = result.substring(separator.length()); - } - if (!result.endsWith(separator)) { - result += separator; + for (int i = 0; i < paths.length; i++) { + String path = paths[i]; + if (i > 0) { + if (path.startsWith(separator)) { + path = path.substring(separator.length()); + } + + if (!result.endsWith(separator)) { + result += separator; + } } + result += path; } + return result; } @@ -69,4 +77,14 @@ public class Path { } return ext; } + + public static void createDirectorySafe(File directory) throws IOException { + if (!directory.exists()) { + if (!directory.mkdirs()) { + if (!directory.exists()) { + throw new IOException("Cannot create directory " + directory); + } + } + } + } } diff --git a/src/com/jpexs/decompiler/flash/console/CommandLineArgumentParser.java b/src/com/jpexs/decompiler/flash/console/CommandLineArgumentParser.java index b9e86fc01..ad601f796 100644 --- a/src/com/jpexs/decompiler/flash/console/CommandLineArgumentParser.java +++ b/src/com/jpexs/decompiler/flash/console/CommandLineArgumentParser.java @@ -69,6 +69,7 @@ import com.jpexs.decompiler.flash.exporters.settings.SoundExportSettings; import com.jpexs.decompiler.flash.exporters.settings.TextExportSettings; import com.jpexs.decompiler.flash.exporters.swf.SwfXmlExporter; import com.jpexs.decompiler.flash.gui.Main; +import com.jpexs.decompiler.flash.helpers.FileTextWriter; import com.jpexs.decompiler.flash.importers.BinaryDataImporter; import com.jpexs.decompiler.flash.importers.ImageImporter; import com.jpexs.decompiler.flash.importers.SwfXmlImporter; @@ -932,16 +933,16 @@ public class CommandLineArgumentParser { System.out.println("Start exporting " + inFile.getName()); } - SWF exfile = new SWF(new FileInputStream(inFile), Configuration.parallelSpeedUp.get()); - exfile.swfList = new SWFList(); - exfile.swfList.sourceInfo = new SWFSourceInfo(null, inFile.getAbsolutePath(), inFile.getName()); + SWF swf = new SWF(new FileInputStream(inFile), Configuration.parallelSpeedUp.get()); + swf.swfList = new SWFList(); + swf.swfList.sourceInfo = new SWFSourceInfo(null, inFile.getAbsolutePath(), inFile.getName()); String outDir = outDirBase.getAbsolutePath(); if (!singleFile) { outDir = Path.combine(outDir, inFile.getName()); } List extags = new ArrayList<>(); - for (Tag t : exfile.tags) { + for (Tag t : swf.tags) { if (t instanceof CharacterIdTag) { CharacterIdTag c = (CharacterIdTag) t; if (selectionIds.contains(c.getCharacterId())) { @@ -955,7 +956,7 @@ public class CommandLineArgumentParser { } final Level level = traceLevel; - exfile.addEventListener(new EventListener() { + swf.addEventListener(new EventListener() { @Override public void handleExportingEvent(String type, int index, int count, Object data) { if (level.intValue() <= Level.FINE.intValue()) { @@ -996,7 +997,7 @@ public class CommandLineArgumentParser { commandLineMode = true; boolean exportAll = exportFormats.contains("all"); boolean multipleExportTypes = exportAll || exportFormats.size() > 1; - EventListener evl = exfile.getExportEventListener(); + EventListener evl = swf.getExportEventListener(); if (exportAll || exportFormats.contains("image")) { System.out.println("Exporting images..."); @@ -1045,27 +1046,34 @@ public class CommandLineArgumentParser { if (exportAll || exportFormats.contains("frame")) { System.out.println("Exporting frames..."); List frames = new ArrayList<>(); - for (int i = 0; i < exfile.frameCount; i++) { + for (int i = 0; i < swf.frameCount; i++) { if (selection.contains(i + 1)) { frames.add(i); } } - new FrameExporter().exportFrames(handler, outDir + (multipleExportTypes ? File.separator + "frames" : ""), exfile, 0, frames, new FramesExportSettings(enumFromStr(formats.get("frame"), FramesExportMode.class), zoom), evl); + new FrameExporter().exportFrames(handler, outDir + (multipleExportTypes ? File.separator + "frames" : ""), swf, 0, frames, new FramesExportSettings(enumFromStr(formats.get("frame"), FramesExportMode.class), zoom), evl); } - ScriptExportSettings scriptExportSettings = new ScriptExportSettings(enumFromStr(formats.get("script"), ScriptExportMode.class), Configuration.textExportSingleFile.get()); + boolean parallel = Configuration.parallelSpeedUp.get(); + String scriptsFolder = Path.combine(outDir, "scripts"); + Path.createDirectorySafe(new File(scriptsFolder)); + ScriptExportSettings scriptExportSettings = new ScriptExportSettings(enumFromStr(formats.get("script"), ScriptExportMode.class), !parallel && Configuration.scriptExportSingleFile.get()); if (exportAll || exportFormats.contains("script")) { System.out.println("Exporting scripts..."); - boolean parallel = Configuration.parallelSpeedUp.get(); if (as3classes.isEmpty()) { as3classes = parseSelectClassOld(args); } - if (!as3classes.isEmpty()) { - for (String as3class : as3classes) { - exportOK = exportOK && exfile.exportAS3Class(as3class, outDir, scriptExportSettings, parallel, evl); + + String singleFileName = Path.combine(scriptsFolder, swf.getShortFileName() + ".as"); + try (FileTextWriter writer = scriptExportSettings.singleFile ? new FileTextWriter(Configuration.getCodeFormatting(), new FileOutputStream(singleFileName)) : null) { + scriptExportSettings.singleFileWriter = writer; + if (!as3classes.isEmpty()) { + for (String as3class : as3classes) { + exportOK = exportOK && swf.exportAS3Class(as3class, scriptsFolder, scriptExportSettings, parallel, evl); + } + } else { + exportOK = exportOK && swf.exportActionScript(handler, scriptsFolder, scriptExportSettings, parallel, evl) != null; } - } else { - exportOK = exportOK && exfile.exportActionScript(handler, outDir, scriptExportSettings, parallel, evl) != null; } } @@ -1075,7 +1083,7 @@ public class CommandLineArgumentParser { if (flaVersion == null) { flaVersion = FLAVersion.CS6; //Defaults to CS6 } - exfile.exportFla(handler, outDir + (multipleExportTypes ? File.separator + "fla" : ""), inFile.getName(), ApplicationInfo.APPLICATION_NAME, ApplicationInfo.applicationVerName, ApplicationInfo.version, Configuration.parallelSpeedUp.get(), flaVersion); + swf.exportFla(handler, outDir + (multipleExportTypes ? File.separator + "fla" : ""), inFile.getName(), ApplicationInfo.APPLICATION_NAME, ApplicationInfo.applicationVerName, ApplicationInfo.version, Configuration.parallelSpeedUp.get(), flaVersion); } if (exportFormats.contains("xfl")) { @@ -1084,7 +1092,7 @@ public class CommandLineArgumentParser { if (xflVersion == null) { xflVersion = FLAVersion.CS6; //Defaults to CS6 } - exfile.exportXfl(handler, outDir + (multipleExportTypes ? File.separator + "xfl" : ""), inFile.getName(), ApplicationInfo.APPLICATION_NAME, ApplicationInfo.applicationVerName, ApplicationInfo.version, Configuration.parallelSpeedUp.get(), xflVersion); + swf.exportXfl(handler, outDir + (multipleExportTypes ? File.separator + "xfl" : ""), inFile.getName(), ApplicationInfo.APPLICATION_NAME, ApplicationInfo.applicationVerName, ApplicationInfo.version, Configuration.parallelSpeedUp.get(), xflVersion); } if (!singleFile) { @@ -1093,7 +1101,7 @@ public class CommandLineArgumentParser { System.out.println("Export finished: " + inFile.getName() + " Export time: " + Helper.formatTimeSec(time)); } - exfile.clearAllCache(); + swf.clearAllCache(); } } catch (OutOfMemoryError | Exception ex) { System.err.print("FAIL: Exporting Failed on Exception - "); diff --git a/src/com/jpexs/decompiler/flash/gui/Main.java b/src/com/jpexs/decompiler/flash/gui/Main.java index 5edd05e9f..8293fa018 100644 --- a/src/com/jpexs/decompiler/flash/gui/Main.java +++ b/src/com/jpexs/decompiler/flash/gui/Main.java @@ -1006,7 +1006,7 @@ public class Main { * @throws IOException On error */ public static void main(String[] args) throws IOException { - + clearTemp(); String pluginPath = Configuration.pluginPath.get(); if (pluginPath != null && !pluginPath.isEmpty()) { @@ -1029,23 +1029,23 @@ public class Main { if (args.length == 0) { initGui(); - if(Configuration.allowOnlyOneInstance.get() && FirstInstance.focus()){ //Try to focus first instance + if (Configuration.allowOnlyOneInstance.get() && FirstInstance.focus()) { //Try to focus first instance Main.exit(); - }else{ + } else { showModeFrame(); } - + } else { String[] filesToOpen = CommandLineArgumentParser.parseArguments(args); if (filesToOpen != null && filesToOpen.length > 0) { initGui(); shouldCloseWhenClosingLoadingDialog = true; - if(Configuration.allowOnlyOneInstance.get() && FirstInstance.openFiles(Arrays.asList(filesToOpen))){ //Try to open in first instance + if (Configuration.allowOnlyOneInstance.get() && FirstInstance.openFiles(Arrays.asList(filesToOpen))) { //Try to open in first instance Main.exit(); - }else{ + } else { for (String fileToOpen : filesToOpen) { openFile(fileToOpen, null); - } + } } } } @@ -1053,15 +1053,8 @@ public class Main { public static String tempFile(String url) throws IOException { File f = new File(Configuration.getFFDecHome() + "saved" + File.separator); - if (!f.exists()) { - if (!f.mkdirs()) { - if (!f.exists()) { - throw new IOException("cannot create directory " + f); - } - } - } + Path.createDirectorySafe(f); return Configuration.getFFDecHome() + "saved" + File.separator + "asdec_" + Integer.toHexString(url.hashCode()) + ".tmp"; - } public static void removeTrayIcon() { diff --git a/src/com/jpexs/decompiler/flash/gui/MainPanel.java b/src/com/jpexs/decompiler/flash/gui/MainPanel.java index 24127620f..9c878f3af 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/MainPanel.java @@ -74,6 +74,7 @@ import com.jpexs.decompiler.flash.gui.player.FlashPlayerPanel; import com.jpexs.decompiler.flash.gui.tagtree.TagTree; import com.jpexs.decompiler.flash.gui.tagtree.TagTreeModel; import com.jpexs.decompiler.flash.gui.timeline.TimelineViewPanel; +import com.jpexs.decompiler.flash.helpers.FileTextWriter; import com.jpexs.decompiler.flash.helpers.Freed; import com.jpexs.decompiler.flash.importers.BinaryDataImporter; import com.jpexs.decompiler.flash.importers.ImageImporter; @@ -156,6 +157,7 @@ import java.beans.PropertyChangeListener; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; @@ -453,13 +455,7 @@ public final class MainPanel extends JPanel implements ActionListener, TreeSelec Random rnd = new Random(); tempDir += "ffdec" + File.separator + "export" + File.separator + System.currentTimeMillis() + "_" + rnd.nextInt(1000); File fTempDir = new File(tempDir); - if (!fTempDir.exists()) { - if (!fTempDir.mkdirs()) { - if (!fTempDir.exists()) { - throw new IOException("cannot create directory " + fTempDir); - } - } - } + Path.createDirectorySafe(fTempDir); File ftemp = new File(tempDir); ExportDialog exd = new ExportDialog(null); @@ -1119,16 +1115,26 @@ public final class MainPanel extends JPanel implements ActionListener, TreeSelec ret.addAll(frameExporter.exportFrames(handler, selFile + File.separator + subFolder, swf, containerId, entry.getValue(), fes, evl)); } - ScriptExportSettings scriptExportSettings = new ScriptExportSettings(export.getValue(ScriptExportMode.class), Configuration.textExportSingleFile.get()); + boolean parallel = Configuration.parallelSpeedUp.get(); + String scriptsFolder = Path.combine(selFile, "scripts"); + Path.createDirectorySafe(new File(scriptsFolder)); + ScriptExportSettings scriptExportSettings = new ScriptExportSettings(export.getValue(ScriptExportMode.class), !parallel && Configuration.scriptExportSingleFile.get()); + String singleFileName = Path.combine(scriptsFolder, swf.getShortFileName() + ".as"); if (swf.isAS3()) { - for (int i = 0; i < as3scripts.size(); i++) { - ScriptPack tls = as3scripts.get(i); - Main.startWork(translate("work.exporting") + " " + (i + 1) + "/" + as3scripts.size() + " " + tls.getPath() + " ..."); - ret.add(tls.export(selFile, scriptExportSettings, Configuration.parallelSpeedUp.get())); + try (FileTextWriter writer = scriptExportSettings.singleFile ? new FileTextWriter(Configuration.getCodeFormatting(), new FileOutputStream(singleFileName)) : null) { + scriptExportSettings.singleFileWriter = writer; + for (int i = 0; i < as3scripts.size(); i++) { + ScriptPack tls = as3scripts.get(i); + Main.startWork(translate("work.exporting") + " " + (i + 1) + "/" + as3scripts.size() + " " + tls.getPath() + " ..."); + ret.add(tls.export(scriptsFolder, scriptExportSettings, parallel)); + } } } else { Map asmsToExport = swf.getASMs(true, as12scripts, false); - ret.addAll(new AS2ScriptExporter().exportAS2ScriptsTimeout(handler, selFile + File.separator + "scripts", asmsToExport, scriptExportSettings, evl)); + try (FileTextWriter writer = scriptExportSettings.singleFile ? new FileTextWriter(Configuration.getCodeFormatting(), new FileOutputStream(singleFileName)) : null) { + scriptExportSettings.singleFileWriter = writer; + ret.addAll(new AS2ScriptExporter().exportAS2ScriptsTimeout(handler, scriptsFolder, asmsToExport, scriptExportSettings, evl)); + } } } return ret; @@ -1163,8 +1169,15 @@ public final class MainPanel extends JPanel implements ActionListener, TreeSelec } } - ScriptExportSettings exportSettings = new ScriptExportSettings(export.getValue(ScriptExportMode.class), Configuration.textExportSingleFile.get()); - swf.exportActionScript(handler, selFile, exportSettings, Configuration.parallelSpeedUp.get(), evl); + boolean parallel = Configuration.parallelSpeedUp.get(); + String scriptsFolder = Path.combine(selFile, "scripts"); + Path.createDirectorySafe(new File(scriptsFolder)); + ScriptExportSettings scriptExportSettings = new ScriptExportSettings(export.getValue(ScriptExportMode.class), !parallel && Configuration.scriptExportSingleFile.get()); + String singleFileName = Path.combine(scriptsFolder, swf.getShortFileName() + ".as"); + try (FileTextWriter writer = scriptExportSettings.singleFile ? new FileTextWriter(Configuration.getCodeFormatting(), new FileOutputStream(singleFileName)) : null) { + scriptExportSettings.singleFileWriter = writer; + swf.exportActionScript(handler, scriptsFolder, scriptExportSettings, parallel, evl); + } } public List getSwfs() { @@ -1840,7 +1853,7 @@ public final class MainPanel extends JPanel implements ActionListener, TreeSelec if (bi != -1) { getABCPanel().abc.bodies.get(bi).restoreControlFlow(getABCPanel().abc.constants, getABCPanel().decompiledTextArea.getCurrentTrait(), getABCPanel().abc.method_info.get(getABCPanel().abc.bodies.get(bi).method_info)); } - getABCPanel().detailPanel.methodTraitPanel.methodCodePanel.setBodyIndex(bi, getABCPanel().abc, getABCPanel().decompiledTextArea.getCurrentTrait(),getABCPanel().detailPanel.methodTraitPanel.methodCodePanel.getScriptIndex()); + getABCPanel().detailPanel.methodTraitPanel.methodCodePanel.setBodyIndex(bi, getABCPanel().abc, getABCPanel().decompiledTextArea.getCurrentTrait(), getABCPanel().detailPanel.methodTraitPanel.methodCodePanel.getScriptIndex()); } return true; } @@ -1943,7 +1956,7 @@ public final class MainPanel extends JPanel implements ActionListener, TreeSelec getABCPanel().abc.bodies.get(bi).restoreControlFlow(getABCPanel().abc.constants, t, getABCPanel().abc.method_info.get(getABCPanel().abc.bodies.get(bi).method_info)); } } - getABCPanel().detailPanel.methodTraitPanel.methodCodePanel.setBodyIndex(bi, getABCPanel().abc, t,getABCPanel().detailPanel.methodTraitPanel.methodCodePanel.getScriptIndex()); + getABCPanel().detailPanel.methodTraitPanel.methodCodePanel.setBodyIndex(bi, getABCPanel().abc, t, getABCPanel().detailPanel.methodTraitPanel.methodCodePanel.getScriptIndex()); } } catch (Exception ex) { logger.log(Level.SEVERE, "Deobfuscation error", ex); @@ -2616,7 +2629,7 @@ public final class MainPanel extends JPanel implements ActionListener, TreeSelec } else if (treeItem instanceof MetadataTag) { MetadataTag metadataTag = (MetadataTag) treeItem; showCard(CARDPREVIEWPANEL); - previewPanel.showMetaDataPanel(metadataTag); + previewPanel.showMetaDataPanel(metadataTag); } else if (treeItem instanceof DefineBinaryDataTag) { DefineBinaryDataTag binaryTag = (DefineBinaryDataTag) treeItem; showCard(CARDPREVIEWPANEL); diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AboutDialog_sv.properties b/src/com/jpexs/decompiler/flash/gui/locales/AboutDialog_sv.properties index 502d656e6..5f5de8d59 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AboutDialog_sv.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AboutDialog_sv.properties @@ -22,6 +22,6 @@ contributors = Bidragande: translation.author.label = Skapare utav Svensk \u00f6vers\u00e4ttning: #In the translation, insert your name here translation.author = Capasha -translators=\u00d6vers\u00e4ttare: -developers.others=+ andra fr\u00e5n GitHub och Google code -developers=Utvecklare: \ No newline at end of file +developers = Utvecklare: +developers.others = + andra fr\u00e5n GitHub och Google code +translators = \u00d6vers\u00e4ttare: diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties index 5b0860fe8..aee2d4318 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties @@ -236,8 +236,8 @@ config.description.check.updates.enabled = Automatic checking for updates on app config.name.export.formats = (Internal) Export formats config.description.export.formats = Last used export formats -config.name.textExportSingleFile = Export texts in single file -config.description.textExportSingleFile = Exporting texts in one file instead of multiple +config.name.textExportSingleFile = Export texts to single file +config.description.textExportSingleFile = Exporting texts to one file instead of multiple config.name.textExportSingleFileSeparator = Separator of texts in one file text export config.description.textExportSingleFileSeparator = Text to insert between texts in single file text export @@ -331,4 +331,7 @@ config.name.showDebugMenu = Show debug menu config.description.showDebugMenu = Shows debug menu in the ribbon config.name.allowOnlyOneInstance = Allow only one FFDec instance (Only Windows OS) -config.description.allowOnlyOneInstance = FFDec can be then run only once, all files opened will be added to one window. It works only with Windows operating system. \ No newline at end of file +config.description.allowOnlyOneInstance = FFDec can be then run only once, all files opened will be added to one window. It works only with Windows operating system. + +config.name.scriptExportSingleFile = Export scripts to single file +config.description.scriptExportSingleFile = Exporting texts to one file instead of multiple 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 67cb45024..df51cfaa1 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_hu.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_hu.properties @@ -326,3 +326,9 @@ config.description.saveSessionOnExit = Elmenti az aktu\u00e1lis munkamenetet \u0 config.name.showDebugMenu = Hibakeres\u00e9si men\u00fc mutat\u00e1sa config.description.showDebugMenu = Hibakeres\u00e9si men\u00fc mutat\u00e1sa a szalagon + +config.name.allowOnlyOneInstance = Csak egy FFDec p\u00e9ld\u00e1ny enged\u00e9lyez\u00e9se (Csak Windows OS-en) +config.description.allowOnlyOneInstance = FFDec csak egy p\u00e9ld\u00e1nyban futhat, minden f\u00e1jl egy ablakban lesz megnyitva. Csak Windows oper\u00e1ci\u00f3s rendszeren m\u0171k\u00f6dik. + +config.name.scriptExportSingleFile = Szkriptek export\u00e1l\u00e1sa egy f\u00e1jlba +config.description.scriptExportSingleFile = Szkriptek export\u00e1l\u00e1sa egyetlen f\u00e1jlba t\u00f6bb f\u00e1jl helyett diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_sv.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_sv.properties index 239521a07..cf59a9ad6 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_sv.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_sv.properties @@ -50,13 +50,18 @@ config.group.description.decompilation = Global dekompilerings relaterade funkti config.group.name.other = Annat config.group.description.other = Andra okategoriserade inst\u00e4llningar - config.name.openMultipleFiles = \u00d6ppna flera filer config.description.openMultipleFiles = Till\u00e5ter \u00f6ppning utav flera filer samtidigt i ett f\u00f6nster config.name.decompile = Visa ActionScripts k\u00e4lla config.description.decompile = Du kan inaktivera AS dekompilering, och bara P-kod kommer att visas +config.name.dumpView = Dumpnings Vy +config.description.dumpView = Visa raw information dumpning + +config.name.useHexColorFormat = Hex f\u00e4rg utseende +config.description.useHexColorFormat = Visa f\u00e4rgerna i hex format + config.name.parallelSpeedUp = Parallell Uppsnabbning config.description.parallelSpeedUp = Parallellitet kan snabba upp dekompileringen @@ -99,9 +104,6 @@ config.description.openFolderAfterFlaExport = Visa utg\u00e5ngs katalog efter ex config.name.useDetailedLogging = Detaljerad Loggning config.description.useDetailedLogging = Logga detaljerade felmeddelande och information f\u00f6r fels\u00f6knings \u00e4ndam\u00e5l -config.name.binaryDataDisplayLimit = Bin\u00e4rdata visnings gr\u00e4ns -config.description.binaryDataDisplayLimit = Maximalt nummer av bytes f\u00f6r att visa fr\u00e5n BinaryData taggar - config.name.debugMode = Fels\u00f6knings l\u00e4ge config.description.debugMode = L\u00e4ge f\u00f6r fels\u00f6kning. Startar fels\u00f6knings menyn. @@ -255,48 +257,66 @@ config.description.packJavaScripts = K\u00f6r JavaScript packare p\u00e5 skripts config.name.textExportExportFontFace = Anv\u00e4nd typsnittsyta i SVG exportering config.description.textExportExportFontFace = B\u00e4dda in typsnitssfiler i SVG anv\u00e4nder typsnittsyta ist\u00e4llet f\u00f6r former -config.description.overrideTextExportFileName = Du kan finjustera filnamnet p\u00e5 den exporterade texten. Anv\u00e4nd {filename} platsh\u00e5llare f\u00f6r att anv\u00e4nda filnamnet av nuvaranda SWF. -config.description.showCloseConfirmation = Visa igen SWF st\u00e4ng bekr\u00e4ftelse f\u00f6r modifierade filer -config.description.showTraitSavedMessage = Visa igen trait sparade meddelande -config.group.description.import = Konfiguration av importeringar -config.name.textImportResizeTextBoundsMode = Text gr\u00e4ns \u00e4ndra storlekl\u00e4ge -config.name.getLocalNamesFromDebugInfo = AS3: F\u00e5 lokala registernamn fr\u00e5n debugger information -config.name.showCloseConfirmation = Visa igen SWF st\u00e4ng bekr\u00e4ftelse -config.name.debuggerPort = Debugger port -config.name.showCodeSavedMessage = Visa igen kod sparade meddelanden -config.description.lastDebuggerReplaceFunction = Funktion namn vilket var senast vald i ers\u00e4ttningssp\u00e5r funktion vid debugger -config.name.showTraitSavedMessage = Visa igen trait sparade meddelanden -config.name.useHexColorFormat = Hex f\u00e4rg utseende -config.name.displayDebuggerInfo = (Internal) Visa debugger information -config.description.autoLoadEmbeddedSwfs = Ladda automatiskt inb\u00e4ddade SWFs fr\u00e5n DefineBinaryData taggar. -config.description.debuggerPort = Port anv\u00e4nd f\u00f6r socket debuggning -config.name.export.zoom = (Internal) Exportera zoom -config.description.useHexColorFormat = Visa f\u00e4rgerna i hex format -config.description.tagTreeShowEmptyFolders = Visa tomma mappar i tagg tr\u00e4det. -config.name.showOldTextDuringTextEditing = Visa gammal text vid text \u00e4ndring -config.description.textImportResizeTextBoundsMode = Text gr\u00e4ns storlekl\u00e4ge efter text \u00e4ndring. -config.name.dumpView = Dumpnings Vy -config.description.getLocalNamesFromDebugInfo = Om debug information visasIf debug info \u00e4r n\u00e4rvarande, namnbyte lokala register fr\u00e5n _loc_x_ till riktiga namn. Detta kan st\u00e4ngas av eftersom vissa obfuskerare anv\u00e4nder ogiltiga registernamn d\u00e4r. -config.description.showCodeSavedMessage = Visa igen kod sparade meddelanden config.name.lzmaFastBytes = LZMA snabba bytes (Giltiga v\u00e4rden: 5-255) -config.description.randomDebuggerPackage = Detta byter namn p\u00e5 debugger paketet till slumpm\u00e4ssig str\u00e4ng vilket g\u00f6r debuggern n\u00e4rvarar h\u00e5rdare f\u00f6r att uppt\u00e4ckas av ActionScript -config.description.displayDebuggerInfo = Visa information om debuggern innan man v\u00e4xlar det -config.name.updateProxyAddress = Http Proxy adress f\u00f6r att kolla efter uppdateringar -config.description.dumpView = Visa raw information dumpning -config.name.overrideTextExportFileName = \u00d6verskrid text exporterings filnamnet -config.name.deobfuscationMode = Deobfuscation mode -config.description.export.zoom = Senast anv\u00e4nd exporterings zoom -config.name.randomDebuggerPackage = Anv\u00e4nd slumpm\u00e4ssigt paketnamn f\u00f6r debugger -config.description.showMethodBodyId = Visar id:t utav methodbody f\u00f6r commandline importering -config.description.updateProxyAddress = Http Proxy adress f\u00f6r att kolla uppdateringar. Format: exempel.com:8080 +config.description.lzmaFastBytes = Snabb bytes parameter av LZMA kodare + +#temporary setting, do not translate it config.name.pluginPath = Plugin S\u00f6kv\u00e4g -config.name.showMethodBodyId = Visa metod kropps id +config.description.pluginPath = - + +config.name.deobfuscationMode = Deobfuscation mode config.description.deobfuscationMode = K\u00f6r deobfuskering p\u00e5 alla filer innan ActionSctipt dekompilering -config.group.name.import = Importering -config.description.showOldTextDuringTextEditing = Visar orginala texten av text taggen med gr\u00e5 f\u00e4rg i f\u00f6rhandsvisnings omr\u00e5det. + +config.name.showMethodBodyId = Visa metod kropps id +config.description.showMethodBodyId = Visar id:t utav methodbody f\u00f6r commandline importering + +config.name.export.zoom = (Internal) Exportera zoom +config.description.export.zoom = Senast anv\u00e4nd exporterings zoom + +config.name.debuggerPort = Debugger port +config.description.debuggerPort = Port anv\u00e4nd f\u00f6r socket debuggning + +config.name.displayDebuggerInfo = (Internal) Visa debugger information +config.description.displayDebuggerInfo = Visa information om debuggern innan man v\u00e4xlar det + +config.name.randomDebuggerPackage = Anv\u00e4nd slumpm\u00e4ssigt paketnamn f\u00f6r debugger +config.description.randomDebuggerPackage = Detta byter namn p\u00e5 debugger paketet till slumpm\u00e4ssig str\u00e4ng vilket g\u00f6r debuggern n\u00e4rvarar h\u00e5rdare f\u00f6r att uppt\u00e4ckas av ActionScript config.name.lastDebuggerReplaceFunction = (Internal) Senast valda sp\u00e5r byte +config.description.lastDebuggerReplaceFunction = Funktion namn vilket var senast vald i ers\u00e4ttningssp\u00e5r funktion vid debugger + +config.name.getLocalNamesFromDebugInfo = AS3: F\u00e5 lokala registernamn fr\u00e5n debugger information +config.description.getLocalNamesFromDebugInfo = Om debug information visasIf debug info \u00e4r n\u00e4rvarande, namnbyte lokala register fr\u00e5n _loc_x_ till riktiga namn. Detta kan st\u00e4ngas av eftersom vissa obfuskerare anv\u00e4nder ogiltiga registernamn d\u00e4r. + config.name.tagTreeShowEmptyFolders = Visa tomma mappar -config.description.pluginPath = - -config.description.lzmaFastBytes = Snabb bytes parameter av LZMA kodare -config.name.autoLoadEmbeddedSwfs = Ladda inb\u00e4ddade SWF automatiskt \ No newline at end of file +config.description.tagTreeShowEmptyFolders = Visa tomma mappar i tagg tr\u00e4det. + +config.name.autoLoadEmbeddedSwfs = Ladda inb\u00e4ddade SWF automatiskt +config.description.autoLoadEmbeddedSwfs = Ladda automatiskt inb\u00e4ddade SWFs fr\u00e5n DefineBinaryData taggar. + +config.name.overrideTextExportFileName = \u00d6verskrid text exporterings filnamnet +config.description.overrideTextExportFileName = Du kan finjustera filnamnet p\u00e5 den exporterade texten. Anv\u00e4nd {filename} platsh\u00e5llare f\u00f6r att anv\u00e4nda filnamnet av nuvaranda SWF. + +config.name.showOldTextDuringTextEditing = Visa gammal text vid text \u00e4ndring +config.description.showOldTextDuringTextEditing = Visar orginala texten av text taggen med gr\u00e5 f\u00e4rg i f\u00f6rhandsvisnings omr\u00e5det. + +config.group.name.import = Importering +config.group.description.import = Konfiguration av importeringar + +config.name.textImportResizeTextBoundsMode = Text gr\u00e4ns \u00e4ndra storlekl\u00e4ge +config.description.textImportResizeTextBoundsMode = Text gr\u00e4ns storlekl\u00e4ge efter text \u00e4ndring. + +config.name.showCloseConfirmation = Visa igen SWF st\u00e4ng bekr\u00e4ftelse +config.description.showCloseConfirmation = Visa igen SWF st\u00e4ng bekr\u00e4ftelse f\u00f6r modifierade filer + +config.name.showCodeSavedMessage = Visa igen kod sparade meddelanden +config.description.showCodeSavedMessage = Visa igen kod sparade meddelanden + +config.name.showTraitSavedMessage = Visa igen trait sparade meddelanden +config.description.showTraitSavedMessage = Visa igen trait sparade meddelande + +config.name.updateProxyAddress = Http Proxy adress f\u00f6r att kolla efter uppdateringar +config.description.updateProxyAddress = Http Proxy adress f\u00f6r att kolla uppdateringar. Format: exempel.com:8080 + +config.name.showDebugMenu = Visa debugg meny +config.description.showDebugMenu = Visar debugg menyn i ribbon diff --git a/src/com/jpexs/decompiler/flash/gui/locales/DebugLogDialog_sv.properties b/src/com/jpexs/decompiler/flash/gui/locales/DebugLogDialog_sv.properties index cc06f03a8..6dd116528 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/DebugLogDialog_sv.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/DebugLogDialog_sv.properties @@ -12,7 +12,8 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . -dialog.title=Debugger Logg -msg.header=anslutning %clientid%: -button.close=St\u00e4ng -button.clear=Rensa \ No newline at end of file + +dialog.title = Debugger Logg +button.clear = Rensa +button.close = St\u00e4ng +msg.header = anslutning %clientid%: diff --git a/src/com/jpexs/decompiler/flash/gui/locales/ExportDialog_sv.properties b/src/com/jpexs/decompiler/flash/gui/locales/ExportDialog_sv.properties index 6aff43f00..618545338 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/ExportDialog_sv.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/ExportDialog_sv.properties @@ -16,10 +16,12 @@ shapes = Former shapes.svg = SVG shapes.png = PNG shapes.bmp = BMP +shapes.canvas = HTML5 Canvas texts = Texter texts.plain = Oformaterad text texts.formatted = Formaterad text +texts.svg = SVG images = Bilder images.png_jpeg = PNG/JPEG @@ -33,6 +35,8 @@ movies.flv = FLV (Inget Ljud) sounds = Ljud sounds.mp3_wav_flv = MP3/WAV/FLV sounds.flv = FLV (Bara ljud) +sounds.mp3_wav = MP3/WAV +sounds.wav = WAV scripts = Scripts scripts.as = AS @@ -40,32 +44,35 @@ scripts.pcode = P-code scripts.pcode_hex = P-code med Hex scripts.hex = Hex +binaryData = Bin\u00e4r data +binaryData.raw = Raw + dialog.title = Exportera... button.ok = Godk\u00e4nn button.cancel = Avbryt -zoom.invalid = Ogiltigt zoomv\u00e4rde. -frames.bmp = BMP -frames.png = PNG -frames.canvas = HTML5 Canvas -frames.svg = SVG -frames.avi = AVI -zoom.percent = % -fonts.ttf = TTF -frames.pdf = PDF -binaryData = Bin\u00e4r data -frames = Frames -sounds.mp3_wav = MP3/WAV -shapes.canvas = HTML5 Canvas -binaryData.raw = Raw -morphshapes.gif = GIF -morphshapes.canvas = HTML5 Canvas -fonts.woff = WOFF morphshapes = Morphshapes -fonts = Typnitt -zoom = Zoom -frames.gif = GIF -sounds.wav = WAV +morphshapes.gif = GIF morphshapes.svg = SVG -texts.svg = SVG \ No newline at end of file +morphshapes.canvas = HTML5 Canvas + +frames = Frames +frames.png = PNG +frames.gif = GIF +frames.avi = AVI +frames.svg = SVG +frames.canvas = HTML5 Canvas +frames.pdf = PDF +frames.bmp = BMP + +fonts = Typnitt +fonts.ttf = TTF +fonts.woff = WOFF + +zoom = Zoom +zoom.percent = % +zoom.invalid = Ogiltigt zoomv\u00e4rde. + +symbolclass = Symbol Klass +symbolclass.csv = CSV diff --git a/src/com/jpexs/decompiler/flash/gui/locales/FontEmbedDialog_sv.properties b/src/com/jpexs/decompiler/flash/gui/locales/FontEmbedDialog_sv.properties index cee4bf41a..d4d0ab19e 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/FontEmbedDialog_sv.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/FontEmbedDialog_sv.properties @@ -16,12 +16,11 @@ range.description = %name% (%available% av %total% tecken) dialog.title = Typsnitts inb\u00e4ddning label.individual = Enskilda tecken: - -ttffile.selection = TTF fil: %fontname% (%filename%) -installed = Installerat: -error.invalidfontfile = Ogiltig typsnittsfil -filter.ttf = True Type Typsnittsfiler (*.ttf) button.loadfont = Ladda typsnitt fr\u00e5n h\u00e5rddisken... -allcharacters = Alla tecken (%available% tecken) +filter.ttf = True Type Typsnittsfiler (*.ttf) +error.invalidfontfile = Ogiltig typsnittsfil +error.cannotreadfontfile = Kunde inte l\u00e4sa typsnittsfilen +installed = Installerat: ttffile.noselection = TTF fil: -error.cannotreadfontfile = Kunde inte l\u00e4sa typsnittsfilen \ No newline at end of file +ttffile.selection = TTF fil: %fontname% (%filename%) +allcharacters = Alla tecken (%available% tecken) diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_sv.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_sv.properties index 46f18996a..4719d2305 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_sv.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_sv.properties @@ -372,6 +372,7 @@ message.font.add.exists = Tecken %char% finns redan i typsnitts tag:en.\nVill du filter.gfx = ScaleForm GFx filer (*.gfx) filter.supported = Alla filtyper som st\u00f6ds work.canceled = Avbruten +work.restoringControlFlow = \u00c5terst\u00e4llande fl\u00f6deskontroll menu.advancedsettings.advancedsettings = Avancerade Inst\u00e4llningar menu.recentFiles = Senaste Filerna @@ -464,66 +465,114 @@ contextmenu.removeWithDependencies = Bort med beroenden abc.action.find-usages = Hitta anv\u00e4ndningar abc.action.find-declaration = Hitta f\u00f6rklaring -work.restoringControlFlow = \u00c5terst\u00e4llande fl\u00f6deskontroll -preview.prevframe = F\u00f6reg\u00e5ende ram -contextmenu.jumpToCharacter = Hoppa till tecken -button.snapshot.hint = Ta snapshot intill clipboard -menu.debugger = Debugger -header.version = SWF Version: -preview.nextframe = N\u00e4sta ram -contextmenu.parseInstructions = Parse AVM2 Instruktioner -contextmenu.addTag = L\u00e4gg till tagg -message.confirm.closeAll = Det finns osparade f\u00f6r\u00e4ndringar. Vill du verkligen st\u00e4nga alla SWFs? -filter.xml = XML -deobfuscation.comment.failed = Deobfuskering \u00e4r aktiverad men dekompileringen slutf\u00f6rdes inte. Om filen INTE \u00e4r obfuskerad, inaktivera "Automatisk Deobfuskering" f\u00f6r ett b\u00e4ttre resultat. -preview.gotoframe.dialog.title = G\u00e5 till ram -menu.settings.dumpView = Dump vy -header.displayrect = Visa rect: -message.confirm.close = Det finns osparade f\u00f6r\u00e4ndringar. Vill du verkligen st\u00e4nga {swfName}? -button.zoomin.hint = Zooma in -button.setAdvanceValues = S\u00e4tt avancerade v\u00e4rden -header.displayrect.value.pixels = %xmin%,%ymin% = > %xmax%,%ymax% pixlar -menu.debugger.showlog = Visa Logg -font.name.intag = Typsnittsnamn i tagg: -menu.file.deobfuscation.old = Gammal stil -deobfuscation.comment.tryenable = Tips: Du kan testa att aktivera "Automatisk deobfuskering" i Inst\u00e4llningar contextmenu.rawEdit = Raw \u00e4ndring -contextmenu.parseABC = Parse ABC -header.framerate = Ram hastighet: -button.zoomfit.hint = Zooma f\u00f6r att passa -header.displayrect.value.twips = %xmin%,%ymin% = > %xmax%,%ymax% twips -preview.gotoframe = G\u00e5 till ram... -binarydata.swfInside = Det ser ut som om det \u00e4r en SWF inuti denna bin\u00e4ra data tagg. Klicka h\u00e4r f\u00f6r att ladda det som subtree. -menu.tools.replace = Ers\u00e4tt text -header.signature = Signature: -menu.debugger.replacetrace = Ers\u00e4tt sp\u00e5rsamtal -menu.debugger.switch = Debugger -header.framecount = Ram r\u00e4knare: -preview.gotoframe.dialog.frame.error = Ogiltigt ram nummer. Det m\u00e5ste vara ett nummer mellan %min% och %max%. -button.zoomnone.hint = Zooma till 1:1 +contextmenu.jumpToCharacter = Hoppa till tecken + +menu.settings.dumpView = Dump vy + menu.view = Vy -header.compression.zlib = ZLIB -menu.deobfuscation = AS1/2 Deobfuskering -contextmenu.importSwfXml = Importera SWF XML menu.file.view.resources = Resurser -error.text.invalid.continue = Ogiltig text: %text% p\u00e5 rad %line%. Vill du forts\u00e4tta? -fit = passa +menu.file.view.hex = Hex dumpning + +node.header = header + +header.signature = Signature: +header.compression = Kompression: header.compression.lzma = LZMA +header.compression.zlib = ZLIB +header.compression.none = Ingen kompression +header.version = SWF Version: +header.gfx = GFX: +header.filesize = Fil storlek: +header.framerate = Ram hastighet: +header.framecount = Ram r\u00e4knare: +header.displayrect = Visa rect: +header.displayrect.value.twips = %xmin%,%ymin% = > %xmax%,%ymax% twips +header.displayrect.value.pixels = %xmin%,%ymin% = > %xmax%,%ymax% pixlar + +#after version 2.1.2 +contextmenu.saveToFile = Spara till Fil +contextmenu.parseActions = Parse actions +contextmenu.parseABC = Parse ABC +contextmenu.parseInstructions = Parse AVM2 Instruktioner + +#after version 2.1.3 +menu.deobfuscation = AS1/2 Deobfuskering +menu.file.deobfuscation.old = Gammal stil +menu.file.deobfuscation.new = Ny stil + +#after version 2.1.4 +contextmenu.openswfinside = \u00d6ppna SWF inuti +binarydata.swfInside = Det ser ut som om det \u00e4r en SWF inuti denna bin\u00e4ra data tagg. Klicka h\u00e4r f\u00f6r att ladda det som subtree. + +#after version 3.0.0 +button.zoomin.hint = Zooma in +button.zoomout.hint = Zooma ut +button.zoomfit.hint = Zooma f\u00f6r att passa +button.zoomnone.hint = Zooma till 1:1 +button.snapshot.hint = Ta snapshot intill clipboard + +editorTruncateWarning = Text trunkerad vid position %chars% i debugg mode. + +#Font name which is presented in the SWF Font tag +font.name.intag = Typsnittsnamn i tagg: + +menu.debugger = Debugger +menu.debugger.switch = Debugger +menu.debugger.replacetrace = Ers\u00e4tt sp\u00e5rsamtal +menu.debugger.showlog = Visa Logg message.debugger = Denna SWF Debugger kan bara anv\u00e4ndas till att skriva ut meddelanden till logg f\u00f6nstret, webbl\u00e4sare konsol eller larm. Den \u00e4r INTE designad f\u00f6r egenskaper som step code, breakpoints och s\u00e5 vidare. -contextmenu.parseActions = Parse actions + +contextmenu.addTag = L\u00e4gg till tagg + +deobfuscation.comment.tryenable = Tips: Du kan testa att aktivera "Automatisk deobfuskering" i Inst\u00e4llningar +deobfuscation.comment.failed = Deobfuskering \u00e4r aktiverad men dekompileringen slutf\u00f6rdes inte. Om filen INTE \u00e4r obfuskerad, inaktivera "Automatisk Deobfuskering" f\u00f6r ett b\u00e4ttre resultat. + +#after version 4.0.2 +preview.nextframe = N\u00e4sta ram +preview.prevframe = F\u00f6reg\u00e5ende ram +preview.gotoframe = G\u00e5 till ram... + +preview.gotoframe.dialog.title = G\u00e5 till ram preview.gotoframe.dialog.message = Skriv in ram nummer (%min% - %max%) -contextmenu.exportSwfXml = Exportera SWF som XML -header.compression.none = Ingen kompression -contextmenu.saveToFile = Spara till Fil -node.header = header -button.zoomout.hint = Zooma ut -header.compression = Kompression: -menu.file.view.hex = Hex dumpning -header.filesize = Fil storlek: +preview.gotoframe.dialog.frame.error = Ogiltigt ram nummer. Det m\u00e5ste vara ett nummer mellan %min% och %max%. + +error.text.invalid.continue = Ogiltig text: %text% p\u00e5 rad %line%. Vill du forts\u00e4tta? + +#after version 4.0.5 contextmenu.copyTag = Kopiera tagg till -editorTruncateWarning = Text trunkerad vid position %chars% i debugg mode. -header.gfx = GFX: -menu.file.deobfuscation.new = Ny stil -contextmenu.openswfinside = \u00d6ppna SWF inuti -contextmenu.exportJavaSource = Exportera Java K\u00e4lla \ No newline at end of file +fit = passa +button.setAdvanceValues = S\u00e4tt avancerade v\u00e4rden + +menu.tools.replace = Ers\u00e4tt text + +message.confirm.close = Det finns osparade f\u00f6r\u00e4ndringar. Vill du verkligen st\u00e4nga {swfName}? +message.confirm.closeAll = Det finns osparade f\u00f6r\u00e4ndringar. Vill du verkligen st\u00e4nga alla SWFs? + +contextmenu.exportJavaSource = Exportera Java K\u00e4lla +contextmenu.exportSwfXml = Exportera SWF som XML +contextmenu.importSwfXml = Importera SWF XML + +filter.xml = XML + +#after version 4.1.0 +contextmenu.undo = \u00c5ngra + +text.align.left = V\u00e4nster justering +text.align.right = H\u00f6ger justering +text.align.center = Mitt justering +text.align.justify = R\u00e4ttf\u00e4rdiga justering + +text.undo = \u00c5ngra f\u00f6r\u00e4ndringar + +menu.file.import.xml = Importera SWF XML +menu.file.export.xml = Exportera SWF XML + +#after version 4.1.1 +text.align.translatex.decrease = Minska TranslateX +text.align.translatex.increase = \u00d6ka TranslateX +selectPreviousTag = V\u00e4lj f\u00f6reg\u00e5ende tagg +selectNextTag = V\u00e4lj n\u00e4sta tagg +button.ignoreAll = Ignorera Allt +menu.file.import.symbolClass = Symbol Klass diff --git a/src/com/jpexs/decompiler/flash/gui/locales/ReplaceTraceDialog_sv.properties b/src/com/jpexs/decompiler/flash/gui/locales/ReplaceTraceDialog_sv.properties index 31df8c375..ec302bfa0 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/ReplaceTraceDialog_sv.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/ReplaceTraceDialog_sv.properties @@ -14,6 +14,7 @@ # along with this program. If not, see . dialog.title = Byt Sp\u00e5r funktionsanrop -function.debugConsole = debugConsole - webbl\u00e4sare javascript console.log + function.debugAlert = debugAlert - webbl\u00e4sare javascript larm +function.debugConsole = debugConsole - webbl\u00e4sare javascript console.log function.debugSocket = debugSocket - socket anslutning till dekompilerare \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/locales/SearchDialog_sv.properties b/src/com/jpexs/decompiler/flash/gui/locales/SearchDialog_sv.properties index effbca355..17028c171 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/SearchDialog_sv.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/SearchDialog_sv.properties @@ -17,15 +17,14 @@ checkbox.regexp = Regular expression button.ok = Godk\u00e4nn button.cancel = Avbryt label.searchtext = S\u00f6k text: +label.replacementtext = Ers\u00e4tt text: #dialog.title = ActionSkript s\u00f6kning dialog.title = Text S\u00f6kning +dialog.title.replace = Byt text error = Fel error.invalidregexp = Ogiltigt m\u00f6nster checkbox.searchText = S\u00f6k i texter checkbox.searchAS = s\u00f6k i AS - -label.replacementtext = Ers\u00e4tt text: checkbox.replaceInParameters = Byt i parametrar -dialog.title.replace = Byt text \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/locales/proxy/ProxyFrame_sv.properties b/src/com/jpexs/decompiler/flash/gui/locales/proxy/ProxyFrame_sv.properties index 34e5331a1..8498a6d7a 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/proxy/ProxyFrame_sv.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/proxy/ProxyFrame_sv.properties @@ -24,13 +24,12 @@ sniff = Sniffa: dialog.title = Proxy error = Fel error.port = Felaktigt format f\u00f6r portnumret. - -column.url = URL copy.url = Copy URL -column.size = Storlek -error.save.as = Kan inte spara filen -error.start.server = Kan inte starta server p\u00e5 port %port%. Sn\u00e4lla kolla om porten inte \u00e4r blockerad utav en annan applikation. -error.replace = Kan inte ers\u00e4tta data -column.accessed = N\u00e5s save.as = Spara som... -replace = Byt... \ No newline at end of file +replace = Byt... +error.save.as = Kan inte spara filen +error.replace = Kan inte ers\u00e4tta data +error.start.server = Kan inte starta server p\u00e5 port %port%. Sn\u00e4lla kolla om porten inte \u00e4r blockerad utav en annan applikation. +column.accessed = N\u00e5s +column.size = Storlek +column.url = URL