mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-09-25 12:11:11 +00:00
Issue #1062 Editing/displaying script initializers
This commit is contained in:
@@ -37,6 +37,7 @@ import com.jpexs.decompiler.flash.abc.types.traits.TraitSlotConst;
|
||||
import com.jpexs.decompiler.flash.gui.AppStrings;
|
||||
import com.jpexs.decompiler.flash.gui.View;
|
||||
import com.jpexs.decompiler.flash.gui.editor.LineMarkedEditorPane;
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.hilight.HighlightData;
|
||||
import com.jpexs.decompiler.flash.helpers.hilight.HighlightSpecialType;
|
||||
import com.jpexs.decompiler.flash.helpers.hilight.Highlighting;
|
||||
@@ -516,8 +517,8 @@ public class DecompiledEditorPane extends LineMarkedEditorPane implements CaretL
|
||||
Highlighting cm = Highlighting.searchPos(classHighlights, pos);
|
||||
if (cm != null) {
|
||||
classIndex = (int) cm.getProperties().index;
|
||||
displayClass(classIndex, script.scriptIndex);
|
||||
}
|
||||
displayClass(classIndex, script.scriptIndex);
|
||||
Highlighting tm = Highlighting.searchPos(methodHighlights, pos);
|
||||
if (tm != null) {
|
||||
String name = "";
|
||||
@@ -594,13 +595,11 @@ public class DecompiledEditorPane extends LineMarkedEditorPane implements CaretL
|
||||
}
|
||||
|
||||
public void gotoTrait(int traitId) {
|
||||
if (traitId == -1) {
|
||||
return;
|
||||
}
|
||||
boolean isScriptInit = traitId == GraphTextWriter.TRAIT_SCRIPT_INITIALIZER;
|
||||
|
||||
Highlighting tc = Highlighting.searchIndex(classHighlights, classIndex);
|
||||
if (tc != null) {
|
||||
Highlighting th = Highlighting.searchIndex(traitHighlights, traitId, tc.startPos, tc.startPos + tc.len);
|
||||
if (tc != null || isScriptInit) {
|
||||
Highlighting th = Highlighting.searchIndex(traitHighlights, traitId, isScriptInit ? 0 : tc.startPos, isScriptInit ? -1 : tc.startPos + tc.len);
|
||||
int pos;
|
||||
if (th != null) {
|
||||
if (th.len > 1) {
|
||||
|
||||
@@ -70,6 +70,10 @@ public class IconListRenderer extends DefaultListCellRenderer {
|
||||
if (tli.getType() == TraitsListItem.Type.INITIALIZER) {
|
||||
label.setIcon(functionIcon);
|
||||
}
|
||||
|
||||
if (tli.getType() == TraitsListItem.Type.SCRIPT_INITIALIZER) {
|
||||
label.setIcon(functionIcon);
|
||||
}
|
||||
return label;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,11 +71,8 @@ public class TraitsList extends JList<Object> implements ListSelectionListener {
|
||||
return;
|
||||
}
|
||||
this.classIndex = classIndex;
|
||||
if (classIndex == -1) {
|
||||
setModel(new DefaultListModel<>());
|
||||
} else {
|
||||
setModel(new TraitsListModel(abc, classIndex, scriptIndex, sorted));
|
||||
}
|
||||
setModel(new TraitsListModel(abc, classIndex, scriptIndex, sorted));
|
||||
|
||||
}
|
||||
|
||||
private int lastSelected = -1;
|
||||
|
||||
@@ -51,6 +51,8 @@ public class TraitsListItem {
|
||||
|
||||
public String STR_CLASS_INITIALIZER = AppStrings.translate("abc.traitslist.classinitializer");
|
||||
|
||||
public String STR_SCRIPT_INITIALIZER = AppStrings.translate("abc.traitslist.scriptinitializer");
|
||||
|
||||
public TraitsListItem(Type type, int index, boolean isStatic, ABC abc, int classIndex, int scriptIndex) {
|
||||
this.type = type;
|
||||
this.index = index;
|
||||
@@ -63,11 +65,17 @@ public class TraitsListItem {
|
||||
public int getGlobalTraitId() {
|
||||
if (type == Type.INITIALIZER) {
|
||||
if (!isStatic) {
|
||||
return abc.class_info.get(classIndex).static_traits.traits.size() + abc.instance_info.get(classIndex).instance_traits.traits.size();
|
||||
return -1;
|
||||
//return abc.class_info.get(classIndex).static_traits.traits.size() + abc.instance_info.get(classIndex).instance_traits.traits.size();
|
||||
} else {
|
||||
return abc.class_info.get(classIndex).static_traits.traits.size() + abc.instance_info.get(classIndex).instance_traits.traits.size() + 1;
|
||||
return -2;
|
||||
//return abc.class_info.get(classIndex).static_traits.traits.size() + abc.instance_info.get(classIndex).instance_traits.traits.size() + 1;
|
||||
}
|
||||
}
|
||||
if (type == Type.SCRIPT_INITIALIZER) {
|
||||
//return abc.class_info.get(classIndex).static_traits.traits.size() + abc.instance_info.get(classIndex).instance_traits.traits.size() + 2;
|
||||
return -3;
|
||||
}
|
||||
if (isStatic) {
|
||||
return index;
|
||||
} else {
|
||||
@@ -76,14 +84,21 @@ public class TraitsListItem {
|
||||
}
|
||||
|
||||
public String toStringName() {
|
||||
if ((type != Type.INITIALIZER) && isStatic) {
|
||||
|
||||
if (type == Type.INITIALIZER) {
|
||||
if (!isStatic) {
|
||||
return "__" + STR_INSTANCE_INITIALIZER;
|
||||
} else {
|
||||
return "__" + STR_CLASS_INITIALIZER;
|
||||
}
|
||||
}
|
||||
if (type == Type.SCRIPT_INITIALIZER) {
|
||||
return "__" + STR_SCRIPT_INITIALIZER;
|
||||
}
|
||||
if (isStatic) {
|
||||
return abc.class_info.get(classIndex).static_traits.traits.get(index).getName(abc).getName(abc.constants, null, false);
|
||||
} else if ((type != Type.INITIALIZER) && (!isStatic)) {
|
||||
return abc.instance_info.get(classIndex).instance_traits.traits.get(index).getName(abc).getName(abc.constants, null, false);
|
||||
} else if (!isStatic) {
|
||||
return "__" + STR_INSTANCE_INITIALIZER;
|
||||
} else {
|
||||
return "__" + STR_CLASS_INITIALIZER;
|
||||
return abc.instance_info.get(classIndex).instance_traits.traits.get(index).getName(abc).getName(abc.constants, null, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,20 +106,24 @@ public class TraitsListItem {
|
||||
public String toString() {
|
||||
String s = "";
|
||||
try {
|
||||
if ((type != Type.INITIALIZER) && isStatic) {
|
||||
if (type == Type.SCRIPT_INITIALIZER) {
|
||||
s = STR_SCRIPT_INITIALIZER;
|
||||
} else if (type == Type.INITIALIZER) {
|
||||
if (!isStatic) {
|
||||
s = STR_INSTANCE_INITIALIZER;
|
||||
} else {
|
||||
s = STR_CLASS_INITIALIZER;
|
||||
}
|
||||
} else if (isStatic) {
|
||||
abc.class_info.get(classIndex).static_traits.traits.get(index).convertHeader(null, "", abc, true, ScriptExportMode.AS, scriptIndex, classIndex, new NulWriter(), new ArrayList<>(), false);
|
||||
HighlightedTextWriter writer = new HighlightedTextWriter(Configuration.getCodeFormatting(), false);
|
||||
abc.class_info.get(classIndex).static_traits.traits.get(index).toStringHeader(null, "", abc, true, ScriptExportMode.AS, scriptIndex, classIndex, writer, new ArrayList<>(), false);
|
||||
s = writer.toString();
|
||||
} else if ((type != Type.INITIALIZER) && (!isStatic)) {
|
||||
} else {
|
||||
abc.instance_info.get(classIndex).instance_traits.traits.get(index).convertHeader(null, "", abc, false, ScriptExportMode.AS, scriptIndex, classIndex, new NulWriter(), new ArrayList<>(), false);
|
||||
HighlightedTextWriter writer = new HighlightedTextWriter(Configuration.getCodeFormatting(), false);
|
||||
abc.instance_info.get(classIndex).instance_traits.traits.get(index).toStringHeader(null, "", abc, false, ScriptExportMode.AS, scriptIndex, classIndex, writer, new ArrayList<>(), false);
|
||||
s = writer.toString();
|
||||
} else if (!isStatic) {
|
||||
s = STR_INSTANCE_INITIALIZER;
|
||||
} else {
|
||||
s = STR_CLASS_INITIALIZER;
|
||||
}
|
||||
} catch (InterruptedException ex) {
|
||||
Logger.getLogger(TraitsListItem.class.getName()).log(Level.SEVERE, null, ex);
|
||||
@@ -126,7 +145,8 @@ public class TraitsListItem {
|
||||
METHOD,
|
||||
VAR,
|
||||
CONST,
|
||||
INITIALIZER;
|
||||
INITIALIZER,
|
||||
SCRIPT_INITIALIZER;
|
||||
|
||||
public static Type getTypeForTrait(Trait t) {
|
||||
if (t instanceof TraitMethodGetterSetter) {
|
||||
|
||||
@@ -49,14 +49,17 @@ public final class TraitsListModel implements ListModel<Object> {
|
||||
|
||||
private void reset() {
|
||||
items = new ArrayList<>();
|
||||
for (int t = 0; t < abc.class_info.get(classIndex).static_traits.traits.size(); t++) {
|
||||
items.add(new TraitsListItem(TraitsListItem.Type.getTypeForTrait(abc.class_info.get(classIndex).static_traits.traits.get(t)), t, true, abc, classIndex, scriptIndex));
|
||||
if (classIndex > -1) {
|
||||
for (int t = 0; t < abc.class_info.get(classIndex).static_traits.traits.size(); t++) {
|
||||
items.add(new TraitsListItem(TraitsListItem.Type.getTypeForTrait(abc.class_info.get(classIndex).static_traits.traits.get(t)), t, true, abc, classIndex, scriptIndex));
|
||||
}
|
||||
for (int t = 0; t < abc.instance_info.get(classIndex).instance_traits.traits.size(); t++) {
|
||||
items.add(new TraitsListItem(TraitsListItem.Type.getTypeForTrait(abc.instance_info.get(classIndex).instance_traits.traits.get(t)), t, false, abc, classIndex, scriptIndex));
|
||||
}
|
||||
items.add(new TraitsListItem(TraitsListItem.Type.INITIALIZER, 0, false, abc, classIndex, scriptIndex));
|
||||
items.add(new TraitsListItem(TraitsListItem.Type.INITIALIZER, 0, true, abc, classIndex, scriptIndex));
|
||||
}
|
||||
for (int t = 0; t < abc.instance_info.get(classIndex).instance_traits.traits.size(); t++) {
|
||||
items.add(new TraitsListItem(TraitsListItem.Type.getTypeForTrait(abc.instance_info.get(classIndex).instance_traits.traits.get(t)), t, false, abc, classIndex, scriptIndex));
|
||||
}
|
||||
items.add(new TraitsListItem(TraitsListItem.Type.INITIALIZER, 0, false, abc, classIndex, scriptIndex));
|
||||
items.add(new TraitsListItem(TraitsListItem.Type.INITIALIZER, 0, true, abc, classIndex, scriptIndex));
|
||||
items.add(new TraitsListItem(TraitsListItem.Type.SCRIPT_INITIALIZER, 0, true, abc, classIndex, scriptIndex));
|
||||
}
|
||||
|
||||
public TraitsListModel(ABC abc, int classIndex, int scriptIndex, boolean sorted) {
|
||||
|
||||
@@ -177,19 +177,19 @@ config.name.gui.window.maximized.vertical = (Internal) Window maximized vertical
|
||||
config.description.gui.window.maximized.vertical = Last window state - maximized vertically
|
||||
|
||||
config.name.gui.avm2.splitPane.dividerLocationPercent = (Internal) AS3 Splitter location
|
||||
config.description.gui.avm2.splitPane.dividerLocationPercent =
|
||||
config.description.gui.avm2.splitPane.dividerLocationPercent =
|
||||
|
||||
config.name.gui.actionSplitPane.dividerLocationPercent = (Internal) AS1/2 splitter location
|
||||
config.description.gui.actionSplitPane.dividerLocationPercent =
|
||||
config.description.gui.actionSplitPane.dividerLocationPercent =
|
||||
|
||||
config.name.gui.previewSplitPane.dividerLocationPercent = (Internal) Preview splitter location
|
||||
config.description.gui.previewSplitPane.dividerLocationPercent =
|
||||
config.description.gui.previewSplitPane.dividerLocationPercent =
|
||||
|
||||
config.name.gui.splitPane1.dividerLocationPercent = (Internal) Splitter location 1
|
||||
config.description.gui.splitPane1.dividerLocationPercent =
|
||||
config.description.gui.splitPane1.dividerLocationPercent =
|
||||
|
||||
config.name.gui.splitPane2.dividerLocationPercent = (Internal) Splitter location 2
|
||||
config.description.gui.splitPane2.dividerLocationPercent =
|
||||
config.description.gui.splitPane2.dividerLocationPercent =
|
||||
|
||||
config.name.saveAsExeScaleMode = Save as EXE scale mode
|
||||
config.description.saveAsExeScaleMode = Scaling mode for EXE export
|
||||
@@ -201,16 +201,16 @@ config.name.guiFontPreviewSampleText = (Internal) Last font preview sample text
|
||||
config.description.guiFontPreviewSampleText = Last font preview sample text list index
|
||||
|
||||
config.name.gui.fontPreviewWindow.width = (Internal) Last font preview window width
|
||||
config.description.gui.fontPreviewWindow.width =
|
||||
config.description.gui.fontPreviewWindow.width =
|
||||
|
||||
config.name.gui.fontPreviewWindow.height = (Internal) Last font preview window height
|
||||
config.description.gui.fontPreviewWindow.height =
|
||||
config.description.gui.fontPreviewWindow.height =
|
||||
|
||||
config.name.gui.fontPreviewWindow.posX = (Internal) Last font preview window X
|
||||
config.description.gui.fontPreviewWindow.posX =
|
||||
config.description.gui.fontPreviewWindow.posX =
|
||||
|
||||
config.name.gui.fontPreviewWindow.posY = (Internal) Last font preview window Y
|
||||
config.description.gui.fontPreviewWindow.posY =
|
||||
config.description.gui.fontPreviewWindow.posY =
|
||||
|
||||
config.name.formatting.indent.size = Characters per indent
|
||||
config.description.formatting.indent.size = Number or spaces(or tabs) for one indentation
|
||||
@@ -307,7 +307,7 @@ config.name.textImportResizeTextBoundsMode = Text bounds resize mode
|
||||
config.description.textImportResizeTextBoundsMode = Text bounds resize mode after text editing.
|
||||
|
||||
config.name.showCloseConfirmation = Show again SWF close confirmation
|
||||
config.description.showCloseConfirmation = Show again SWF close confirmation for modified files.
|
||||
config.description.showCloseConfirmation = Show again SWF close confirmation for modified files.
|
||||
|
||||
config.name.showCodeSavedMessage = Show again code saved message
|
||||
config.description.showCodeSavedMessage = Show again code saved message
|
||||
@@ -352,7 +352,7 @@ config.name.loopMedia = Loop sounds and sprites
|
||||
config.description.loopMedia = Automatically restarts the playing of the sounds and sprites
|
||||
|
||||
config.name.gui.timeLineSplitPane.dividerLocationPercent = (Internal) Timeline Splitter location
|
||||
config.description.gui.timeLineSplitPane.dividerLocationPercent =
|
||||
config.description.gui.timeLineSplitPane.dividerLocationPercent =
|
||||
|
||||
config.name.cacheImages = Cache images
|
||||
config.description.cacheImages = Cache the decoded image objects
|
||||
@@ -374,3 +374,6 @@ config.description.overwriteExistingFiles = Overwrite the existing files during
|
||||
|
||||
config.name.smartNumberFormatting = Use smart number formatting
|
||||
config.description.smartNumberFormatting = Format special numbers (for example colors and times)
|
||||
|
||||
config.name.enableScriptInitializerDisplay = Display script initializers
|
||||
config.description.enableScriptInitializerDisplay = Enable script initializers display and editation. This setting may add one newline to each class file for highlighting.
|
||||
|
||||
@@ -629,3 +629,4 @@ error.image.alpha.invalid = Invalid alpha channel data.
|
||||
|
||||
#after version 6.0.2
|
||||
contextmenu.saveUncompressedToFile = Save to Uncompressed File
|
||||
abc.traitslist.scriptinitializer = script initializer
|
||||
@@ -199,7 +199,7 @@ button.viewgraph = Zobrazit Graf
|
||||
button.viewhex = Zobrazit Hex
|
||||
|
||||
abc.traitslist.instanceinitializer = inicializ\u00e1tor instance
|
||||
abc.traitslist.classinitializer = inicializ\u00e1tor t\u0159\u00eddy
|
||||
abc.traitslist.classinitializer = inicializ\u00e1tor t\u0159\u00eddy
|
||||
|
||||
action.edit.experimental = (Experiment\u00e1ln\u00ed)
|
||||
|
||||
@@ -603,4 +603,29 @@ tagInfo.neededCharacters = Pot\u0159ebn\u00e9 charaktery
|
||||
button.viewhexpcode = Zobrazit Hex s instrukcemi
|
||||
taginfo.header = Z\u00e1kladn\u00ed informace o tagu
|
||||
|
||||
tagInfo.dependentCharacters = Z\u00e1visl\u00e9 charaktery
|
||||
tagInfo.dependentCharacters = Z\u00e1visl\u00e9 charaktery
|
||||
|
||||
#after version 5.3.0
|
||||
header.uncompressed = Bez komprese
|
||||
header.warning.unsupportedGfxCompression = GFX podporuje pouze soubor se Zlib nebo \u017e\u00e1dnou kompres\u00ed.
|
||||
header.warning.minimumZlibVersion = Zlib komprese vy\u017eaduje SWF verze 6 \u010di vy\u0161\u0161\u00ed.
|
||||
header.warning.minimumLzmaVersion = LZMA komprese vy\u017eaduje SWF verze 13 \u010di vy\u0161\u0161\u00ed.
|
||||
|
||||
tagInfo.codecName = N\u00e1zev kodeku
|
||||
tagInfo.exportFormat = Form\u00e1t exportu
|
||||
tagInfo.samplingRate = Vzorkovac\u00ed frekvence
|
||||
tagInfo.stereo = Stereo
|
||||
tagInfo.sampleCount = Po\u010det vzork\u016f
|
||||
|
||||
filter.dmg = Spustieln\u00e9 soubory Macu (*.dmg)
|
||||
filter.linuxExe = Linuxov\u00e9 spustiteln\u00e9 soubory
|
||||
|
||||
import.script.result = %count% skript\u016f importov\u00e1no.
|
||||
import.script.as12warning = Import skript\u016f funguje jen pro AS1/2 skripty.
|
||||
|
||||
error.constantPoolTooBig = Seznam konstant je moc velk\u00fd index=%index%, velikost=%size%
|
||||
error.image.alpha.invalid = Neplatn\u00e1 data alpha kan\u00e1lu.
|
||||
|
||||
#after version 6.0.2
|
||||
contextmenu.saveUncompressedToFile = Ulo\u017eit nekomprimovan\u011b
|
||||
abc.traitslist.scriptinitializer = inicializ\u00e1tor skriptu
|
||||
Reference in New Issue
Block a user