Compare commits
2 commits
ce4c5d9870
...
bb3bbc2efc
Author | SHA1 | Date | |
---|---|---|---|
|
bb3bbc2efc | ||
|
83d57d5ff5 |
5 changed files with 54 additions and 57 deletions
13
README.md
13
README.md
|
@ -21,6 +21,19 @@ Deep WIP multi-tool to work with NS-specific files / filesystem images.
|
||||||
|
|
||||||
JRE/JDK 8u60 or higher.
|
JRE/JDK 8u60 or higher.
|
||||||
|
|
||||||
|
### Notes about usage
|
||||||
|
|
||||||
|
1. Start from clicking on 'settings' and importing keys. Use import. Don't waste your time.
|
||||||
|
2. To open sub-file from the file use right mouse click and select 'Open'. Supported formats listed below.
|
||||||
|
|
||||||
|
### Build this
|
||||||
|
|
||||||
|
1. Install JDK
|
||||||
|
2. Install Maven
|
||||||
|
3. $ git clone https://github.com/developersu/konogonka.git
|
||||||
|
4. $ mvn -B -DskipTests clean package
|
||||||
|
5. $ java -jar target/konogonka-0.x.x-jar-with-dependencies.jar
|
||||||
|
|
||||||
### Checklist
|
### Checklist
|
||||||
|
|
||||||
* [x] NSP (PFS0)
|
* [x] NSP (PFS0)
|
||||||
|
|
2
pom.xml
2
pom.xml
|
@ -8,7 +8,7 @@
|
||||||
<name>konogonka</name>
|
<name>konogonka</name>
|
||||||
|
|
||||||
<artifactId>konogonka</artifactId>
|
<artifactId>konogonka</artifactId>
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
<version>0.0.2-SNAPSHOT</version>
|
||||||
|
|
||||||
<url>https://github.com/developersu/${project.name}}/</url>
|
<url>https://github.com/developersu/${project.name}}/</url>
|
||||||
<description>
|
<description>
|
||||||
|
|
|
@ -117,64 +117,48 @@ public class Pfs0TableViewController implements Initializable {
|
||||||
fileSizeColumn.setCellValueFactory(new PropertyValueFactory<>("fileSize"));
|
fileSizeColumn.setCellValueFactory(new PropertyValueFactory<>("fileSize"));
|
||||||
fileOffsetColumn.setCellValueFactory(new PropertyValueFactory<>("fileOffset"));
|
fileOffsetColumn.setCellValueFactory(new PropertyValueFactory<>("fileOffset"));
|
||||||
// ><
|
// ><
|
||||||
uploadColumn.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Pfs0RowModel, Boolean>, ObservableValue<Boolean>>() {
|
uploadColumn.setCellValueFactory(paramFeatures -> {
|
||||||
@Override
|
Pfs0RowModel model = paramFeatures.getValue();
|
||||||
public ObservableValue<Boolean> call(TableColumn.CellDataFeatures<Pfs0RowModel, Boolean> paramFeatures) {
|
|
||||||
Pfs0RowModel model = paramFeatures.getValue();
|
|
||||||
|
|
||||||
SimpleBooleanProperty booleanProperty = new SimpleBooleanProperty(model.isMarkSelected());
|
SimpleBooleanProperty booleanProperty = new SimpleBooleanProperty(model.isMarkSelected());
|
||||||
|
|
||||||
booleanProperty.addListener(new ChangeListener<Boolean>() {
|
booleanProperty.addListener((observableValue, oldValue, newValue) -> {
|
||||||
@Override
|
model.setMarkSelected(newValue);
|
||||||
public void changed(ObservableValue<? extends Boolean> observableValue, Boolean oldValue, Boolean newValue) {
|
table.refresh();
|
||||||
model.setMarkSelected(newValue);
|
});
|
||||||
table.refresh();
|
return booleanProperty;
|
||||||
}
|
|
||||||
});
|
|
||||||
return booleanProperty;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
uploadColumn.setCellFactory(new Callback<TableColumn<Pfs0RowModel, Boolean>, TableCell<Pfs0RowModel, Boolean>>() {
|
uploadColumn.setCellFactory(paramFeatures -> new CheckBoxTableCell<>());
|
||||||
@Override
|
|
||||||
public TableCell<Pfs0RowModel, Boolean> call(TableColumn<Pfs0RowModel, Boolean> paramFeatures) {
|
|
||||||
return new CheckBoxTableCell<>();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
table.setRowFactory( // this shit is made to implement context menu. It's such a pain..
|
table.setRowFactory( // this shit is made to implement context menu. It's such a pain..
|
||||||
new Callback<TableView<Pfs0RowModel>, TableRow<Pfs0RowModel>>() {
|
Pfs0RowModelTableView -> {
|
||||||
@Override
|
final TableRow<Pfs0RowModel> row = new TableRow<>();
|
||||||
public TableRow<Pfs0RowModel> call(TableView<Pfs0RowModel> Pfs0RowModelTableView) {
|
ContextMenu contextMenu = new ContextMenu();
|
||||||
final TableRow<Pfs0RowModel> row = new TableRow<>();
|
|
||||||
ContextMenu contextMenu = new ContextMenu();
|
|
||||||
|
|
||||||
MenuItem openMenuItem = new MenuItem("Open");
|
MenuItem openMenuItem = new MenuItem("Open");
|
||||||
openMenuItem.setOnAction(new EventHandler<ActionEvent>() {
|
openMenuItem.setOnAction(new EventHandler<ActionEvent>() {
|
||||||
@Override
|
@Override
|
||||||
public void handle(ActionEvent actionEvent) {
|
public void handle(ActionEvent actionEvent) {
|
||||||
MediatorControl.getInstance().getContoller().showContentWindow(provider, row.getItem()); // TODO: change to something better
|
MediatorControl.getInstance().getContoller().showContentWindow(provider, row.getItem()); // TODO: change to something better
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
contextMenu.getItems().addAll(openMenuItem);
|
contextMenu.getItems().addAll(openMenuItem);
|
||||||
|
|
||||||
row.setContextMenu(contextMenu);
|
row.setContextMenu(contextMenu);
|
||||||
row.contextMenuProperty().bind(
|
row.contextMenuProperty().bind(
|
||||||
Bindings.when(Bindings.isNotNull(row.itemProperty())).then(contextMenu).otherwise((ContextMenu)null)
|
Bindings.when(Bindings.isNotNull(row.itemProperty())).then(contextMenu).otherwise((ContextMenu)null)
|
||||||
);
|
);
|
||||||
row.setOnMouseClicked(new EventHandler<MouseEvent>() { // Just.. don't ask..
|
// Just.. don't ask..
|
||||||
@Override
|
row.setOnMouseClicked(mouseEvent -> {
|
||||||
public void handle(MouseEvent mouseEvent) {
|
if (!row.isEmpty() && mouseEvent.getButton() == MouseButton.PRIMARY){
|
||||||
if (!row.isEmpty() && mouseEvent.getButton() == MouseButton.PRIMARY){
|
Pfs0RowModel thisItem = row.getItem();
|
||||||
Pfs0RowModel thisItem = row.getItem();
|
thisItem.setMarkSelected(!thisItem.isMarkSelected());
|
||||||
thisItem.setMarkSelected(!thisItem.isMarkSelected());
|
table.refresh();
|
||||||
table.refresh();
|
}
|
||||||
}
|
mouseEvent.consume();
|
||||||
mouseEvent.consume();
|
});
|
||||||
}
|
return row;
|
||||||
});
|
|
||||||
return row;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
table.setItems(rowsObsLst);
|
table.setItems(rowsObsLst);
|
||||||
|
|
|
@ -30,7 +30,7 @@ import java.util.Locale;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
public class MainFx extends Application {
|
public class MainFx extends Application {
|
||||||
public static final String appVersion = "v0.0-SNAPSHOT";
|
public static final String appVersion = "v0.0.2";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void start(Stage primaryStage) throws Exception{
|
public void start(Stage primaryStage) throws Exception{
|
||||||
|
|
|
@ -420,9 +420,9 @@
|
||||||
<Insets left="5.0" right="5.0" />
|
<Insets left="5.0" right="5.0" />
|
||||||
</padding>
|
</padding>
|
||||||
</Label>
|
</Label>
|
||||||
<TextField fx:id="titleNameTf" GridPane.columnIndex="3" GridPane.rowIndex="11" />
|
<TextField fx:id="titleNameTf" editable="false" GridPane.columnIndex="3" GridPane.rowIndex="11" />
|
||||||
<TextField fx:id="productCodeTf" GridPane.columnIndex="3" GridPane.rowIndex="12" />
|
<TextField fx:id="productCodeTf" editable="false" GridPane.columnIndex="3" GridPane.rowIndex="12" />
|
||||||
<TextField fx:id="reserved4Tf" GridPane.columnIndex="3" GridPane.rowIndex="13" />
|
<TextField fx:id="reserved4Tf" editable="false" GridPane.columnIndex="3" GridPane.rowIndex="13" />
|
||||||
</children>
|
</children>
|
||||||
</GridPane>
|
</GridPane>
|
||||||
<Label text="* bit0 = use 64-bit instructions, bit1 = use 64-bit address space, bit2 = use 32-bit address space, bit3 = use 32-bit address space without reserved region, bit4 = optimize memory allocation?" />
|
<Label text="* bit0 = use 64-bit instructions, bit1 = use 64-bit address space, bit2 = use 32-bit address space, bit3 = use 32-bit address space without reserved region, bit4 = optimize memory allocation?" />
|
||||||
|
@ -1138,8 +1138,8 @@
|
||||||
<Insets left="5.0" right="5.0" />
|
<Insets left="5.0" right="5.0" />
|
||||||
</padding>
|
</padding>
|
||||||
</Label>
|
</Label>
|
||||||
<TextField fx:id="acidRsa2048publicKeyTf" GridPane.columnIndex="3" GridPane.rowIndex="2" />
|
<TextField fx:id="acidRsa2048publicKeyTf" editable="false" GridPane.columnIndex="3" GridPane.rowIndex="2" />
|
||||||
<TextField fx:id="acidRsa2048signatureTf" GridPane.columnIndex="3" GridPane.rowIndex="1" />
|
<TextField fx:id="acidRsa2048signatureTf" editable="false" GridPane.columnIndex="3" GridPane.rowIndex="1" />
|
||||||
<Label text="0x238" GridPane.rowIndex="18">
|
<Label text="0x238" GridPane.rowIndex="18">
|
||||||
<padding>
|
<padding>
|
||||||
<Insets left="5.0" right="5.0" />
|
<Insets left="5.0" right="5.0" />
|
||||||
|
|
Loading…
Reference in a new issue