提交 2c1b3b24 编写于 作者: S Skylot

Merge branch 'jpstotz-copyprefs' into master

......@@ -17,6 +17,7 @@ import com.google.gson.FieldAttributes;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.InstanceCreator;
import com.google.gson.JsonObject;
import jadx.gui.JadxGUI;
import jadx.gui.utils.PathTypeAdapter;
......@@ -92,6 +93,10 @@ public class JadxSettingsAdapter {
return GSON.toJson(settings);
}
public static JsonObject makeJsonObject(JadxSettings settings) {
return GSON.toJsonTree(settings).getAsJsonObject();
}
public static void fill(JadxSettings settings, String jsonStr) {
populate(GSON_BUILDER, jsonStr, JadxSettings.class, settings);
}
......
package jadx.gui.settings;
import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.event.ActionEvent;
import java.awt.event.ItemEvent;
import java.awt.event.MouseAdapter;
......@@ -13,6 +15,9 @@ import javax.swing.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
import say.swing.JFontChooser;
import jadx.api.JadxArgs;
......@@ -113,10 +118,31 @@ public class JadxSettingsWindow extends JDialog {
}
});
JButton copyBtn = new JButton(NLS.str("preferences.copy"));
copyBtn.addActionListener(event -> {
JsonObject settingsJson = JadxSettingsAdapter.makeJsonObject(this.settings);
// remove irrelevant preferences
settingsJson.remove("windowPos");
settingsJson.remove("mainWindowExtendedState");
settingsJson.remove("lastSaveProjectPath");
settingsJson.remove("lastOpenFilePath");
settingsJson.remove("lastSaveFilePath");
settingsJson.remove("recentProjects");
String settingsText = new GsonBuilder().setPrettyPrinting().create().toJson(settingsJson);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
StringSelection selection = new StringSelection(settingsText);
clipboard.setContents(selection, selection);
JOptionPane.showMessageDialog(
JadxSettingsWindow.this,
NLS.str("preferences.copy_message"));
});
JPanel buttonPane = new JPanel();
buttonPane.setLayout(new BoxLayout(buttonPane, BoxLayout.LINE_AXIS));
buttonPane.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
buttonPane.add(resetBtn);
buttonPane.add(copyBtn);
buttonPane.add(Box.createHorizontalGlue());
buttonPane.add(saveBtn);
buttonPane.add(Box.createRigidArea(new Dimension(10, 0)));
......
......@@ -124,6 +124,8 @@ preferences.cancel=Abbrechen
preferences.reset=Zurücksetzen
preferences.reset_message=Einstellungen auf Standardwerte zurücksetzen?
preferences.reset_title=Einstellungen zurücksetzen
#preferences.copy=Copy to clipboard
#preferences.copy_message=All settings values has been copied to clipboard
preferences.rename=Umbenennen
preferences.rename_case=System unterscheidet zwischen Groß/Kleinschreibung
preferences.rename_valid=Ist eine gültige Kennung
......
......@@ -124,6 +124,8 @@ preferences.cancel=Cancel
preferences.reset=Reset
preferences.reset_message=Reset settings to default values?
preferences.reset_title=Reset settings
preferences.copy=Copy to clipboard
preferences.copy_message=All settings values has been copied to clipboard
preferences.rename=Rename
preferences.rename_case=System case sensitivity
preferences.rename_valid=To be valid identifier
......
......@@ -124,6 +124,8 @@ preferences.cancel=Cancelar
preferences.reset=Reestablecer
preferences.reset_message=¿Reestablecer preferencias a valores por defecto?
preferences.reset_title=Reestablecer preferencias
#preferences.copy=Copy to clipboard
#preferences.copy_message=All settings values has been copied to clipboard
#preferences.rename=
#preferences.rename_case=
#preferences.rename_valid=
......
......@@ -124,6 +124,8 @@ preferences.cancel=取消
preferences.reset=重置
preferences.reset_message=要恢复默认设置吗?
preferences.reset_title=重置设置
#preferences.copy=Copy to clipboard
#preferences.copy_message=All settings values has been copied to clipboard
preferences.rename=重命名
preferences.rename_case=系统区分大小写
preferences.rename_valid=是有效的标识符
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册