Translations & Cleanup

This commit is contained in:
Konloch 2021-07-21 09:20:25 -07:00
parent 0898588be6
commit 296227360a
5 changed files with 21 additions and 19 deletions

View file

@ -75,8 +75,6 @@ import static the.bytecode.club.bytecodeviewer.util.MiscUtils.guessLanguage;
* This is caused by the ctrlMouseWheelZoom code, a temporary patch is just removing it worst case * This is caused by the ctrlMouseWheelZoom code, a temporary patch is just removing it worst case
* + Versioning and updating need to be fixed * + Versioning and updating need to be fixed
* + Fix classfile searcher * + Fix classfile searcher
* + JHexEditor in dark mode is nearly unreadable -> Theme support
* + JHexEditor doesn't apply font size from settings
* *
* TODO API BUGS: * TODO API BUGS:
* + All of the plugins that modify code need to include BytecodeViewer.updateAllClassNodeByteArrays(); * + All of the plugins that modify code need to include BytecodeViewer.updateAllClassNodeByteArrays();
@ -91,11 +89,11 @@ import static the.bytecode.club.bytecodeviewer.util.MiscUtils.guessLanguage;
* + Fix hook inject for EZ-Injection * + Fix hook inject for EZ-Injection
* *
* TODO FEATURES: * TODO FEATURES:
* + On refresh save position * + System Consoles and Error Dialogs should create a new tab rather than a new window
* + On refresh save scroll position
* + Option to only compile currently viewed class (true by default) * + Option to only compile currently viewed class (true by default)
* + CLI Headless needs to be supported * + CLI Headless needs to be supported
* + Add stackmapframes to bytecode decompiler * + Add stackmapframes to bytecode decompiler
* + Add JEB decompiler optionally, requires them to add jeb library jar
* + Add https://github.com/exbin/bined as the replacement Hed Viewer/Editor * + Add https://github.com/exbin/bined as the replacement Hed Viewer/Editor
* + Make the decompilers launch in a separate process * + Make the decompilers launch in a separate process
* + Make it use that global last used file folder inside of export as jar * + Make it use that global last used file folder inside of export as jar
@ -108,6 +106,7 @@ import static the.bytecode.club.bytecodeviewer.util.MiscUtils.guessLanguage;
* *
* TODO IDEAS: * TODO IDEAS:
* + App Bundle Support * + App Bundle Support
* + Add JEB decompiler optionally, requires them to add jeb library jar
* + Add the setting to force all non-class resources to be opened with the Hex Viewer * + Add the setting to force all non-class resources to be opened with the Hex Viewer
* ^ Optionally a right-click menu open-as would work inside of the resource list * ^ Optionally a right-click menu open-as would work inside of the resource list
* + Allow class files to be opened without needing the .class extension * + Allow class files to be opened without needing the .class extension
@ -177,6 +176,7 @@ public class BytecodeViewer
{ {
//precache settings file //precache settings file
SettingsSerializer.preloadSettingsFile(); SettingsSerializer.preloadSettingsFile();
//setup look and feel //setup look and feel
Configuration.lafTheme.setLAF(); Configuration.lafTheme.setLAF();
@ -244,6 +244,7 @@ public class BytecodeViewer
{ {
for (Process proc : createdProcesses) for (Process proc : createdProcesses)
proc.destroy(); proc.destroy();
SettingsSerializer.saveSettings(); SettingsSerializer.saveSettings();
cleanup(); cleanup();
}, "Shutdown Hook")); }, "Shutdown Hook"));
@ -291,12 +292,9 @@ public class BytecodeViewer
resourceContainers.add(container); resourceContainers.add(container);
SwingUtilities.invokeLater(() -> SwingUtilities.invokeLater(() ->
{ {
try try {
{
viewer.resourcePane.addResourceContainer(container); viewer.resourcePane.addResourceContainer(container);
} } catch (Exception e) {
catch (Exception e)
{
e.printStackTrace(); e.printStackTrace();
} }
}); });
@ -359,6 +357,7 @@ public class BytecodeViewer
for (ResourceContainer container : resourceContainers) for (ResourceContainer container : resourceContainers)
{ {
ClassNode node = container.getClassNode(name); ClassNode node = container.getClassNode(name);
if (node != null) if (node != null)
return node; return node;
} }
@ -414,7 +413,7 @@ public class BytecodeViewer
/** /**
* Gets all of the loaded classes as an array list * Gets all of the loaded classes as an array list
* <p> *
* TODO: remove this and replace it with: * TODO: remove this and replace it with:
* BytecodeViewer.getResourceContainers().forEach(container -> { * BytecodeViewer.getResourceContainers().forEach(container -> {
* execute(new ArrayList<>(container.resourceClasses.values())); * execute(new ArrayList<>(container.resourceClasses.values()));
@ -562,7 +561,7 @@ public class BytecodeViewer
*/ */
public static void showMessage(String message) public static void showMessage(String message)
{ {
BetterJOptionPane.showMessageDialog(viewer, message); ExtendedJOptionPane.showMessageDialog(viewer, message);
} }
/** /**
@ -572,7 +571,7 @@ public class BytecodeViewer
*/ */
public static String showInput(String message) public static String showInput(String message)
{ {
return BetterJOptionPane.showInputDialog(viewer, message); return ExtendedJOptionPane.showInputDialog(viewer, message);
} }
/** /**
@ -681,9 +680,8 @@ public class BytecodeViewer
{ {
if (ask) if (ask)
{ {
MultipleChoiceDialog dialog = new MultipleChoiceDialog("Bytecode Viewer - Reset Workspace", MultipleChoiceDialog dialog = new MultipleChoiceDialog(TranslatedStrings.RESET_TITLE.toString(),
"Are you sure you want to reset the workspace?" + TranslatedStrings.RESET_CONFIRM.toString(),
"\n\rIt will also reset your file navigator and search.",
new String[]{TranslatedStrings.YES.toString(), TranslatedStrings.NO.toString()}); new String[]{TranslatedStrings.YES.toString(), TranslatedStrings.NO.toString()});
if (dialog.promptChoice() != 0) if (dialog.promptChoice() != 0)

View file

@ -16,7 +16,7 @@ import static javax.swing.JOptionPane.*;
* @since 7/4/2021 * @since 7/4/2021
*/ */
public class BetterJOptionPane public class ExtendedJOptionPane
{ {
public static void showMessageDialog(Component parentComponent, public static void showMessageDialog(Component parentComponent,
Object message) throws HeadlessException Object message) throws HeadlessException

View file

@ -77,7 +77,7 @@ public class SettingsDialog extends JScrollPane
public void showDialog() public void showDialog()
{ {
BetterJOptionPane.showJPanelDialog(null, this, 460, dialogs::add); ExtendedJOptionPane.showJPanelDialog(null, this, 460, dialogs::add);
} }
private void buildPanel() private void buildPanel()

View file

@ -67,6 +67,8 @@ public enum TranslatedStrings
SELECT_EXTERNAL_PLUGIN_TITLE, SELECT_EXTERNAL_PLUGIN_TITLE,
SELECT_EXTERNAL_PLUGIN_DESCRIPTION, SELECT_EXTERNAL_PLUGIN_DESCRIPTION,
FOREIGN_LIBRARY_WARNING, FOREIGN_LIBRARY_WARNING,
RESET_TITLE,
RESET_CONFIRM,
EXIT_TITLE, EXIT_TITLE,
EXIT_CONFIRM, EXIT_CONFIRM,
ABOUT_TITLE, ABOUT_TITLE,

View file

@ -245,7 +245,9 @@
"SELECT_FILE_DESCRIPTION": "APKs, DEX, Class Files or Zip/Jar/War Archives", "SELECT_FILE_DESCRIPTION": "APKs, DEX, Class Files or Zip/Jar/War Archives",
"SELECT_EXTERNAL_PLUGIN_TITLE": "Select External Plugin", "SELECT_EXTERNAL_PLUGIN_TITLE": "Select External Plugin",
"SELECT_EXTERNAL_PLUGIN_DESCRIPTION": "BCV External Plugin in js, java, python, ruby or groovy", "SELECT_EXTERNAL_PLUGIN_DESCRIPTION": "BCV External Plugin in js, java, python, ruby or groovy",
"FOREIGN_LIBRARY_WARNING": "WARNING: With this being toggled off outdated libraries will NOT be removed.\nIt's also a security issue.\nONLY TURN IT OFF IF YOU KNOW WHAT YOU'RE DOING.", "FOREIGN_LIBRARY_WARNING": "WARNING: With this being toggled off outdated libraries will NOT be removed.\n\rIt's also a security issue.\n\rONLY TURN IT OFF IF YOU KNOW WHAT YOU'RE DOING.",
"RESET_TITLE": "{PRODUCT_NAME} - Reset Workspace",
"RESET_CONFIRM": "Are you sure you want to reset the workspace?\n\rIt will also reset your file navigator and search.",
"EXIT_TITLE": "{PRODUCT_NAME} - Exit", "EXIT_TITLE": "{PRODUCT_NAME} - Exit",
"EXIT_CONFIRM": "Are you sure you want to exit?", "EXIT_CONFIRM": "Are you sure you want to exit?",
"ABOUT_TITLE": "{PRODUCT_NAME} - About - {WEBSITE} | {TBC}", "ABOUT_TITLE": "{PRODUCT_NAME} - About - {WEBSITE} | {TBC}",