Compare commits

..

No commits in common. "bb3bbc2efc60889448d8882583ce49f856243e56" and "ce4c5d98705ad3a8a4582f0d2eac6caa7ce63be6" have entirely different histories.

5 changed files with 57 additions and 54 deletions

View file

@ -21,19 +21,6 @@ Deep WIP multi-tool to work with NS-specific files / filesystem images.
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
* [x] NSP (PFS0)

View file

@ -8,7 +8,7 @@
<name>konogonka</name>
<artifactId>konogonka</artifactId>
<version>0.0.2-SNAPSHOT</version>
<version>0.0.1-SNAPSHOT</version>
<url>https://github.com/developersu/${project.name}}/</url>
<description>

View file

@ -117,48 +117,64 @@ public class Pfs0TableViewController implements Initializable {
fileSizeColumn.setCellValueFactory(new PropertyValueFactory<>("fileSize"));
fileOffsetColumn.setCellValueFactory(new PropertyValueFactory<>("fileOffset"));
// ><
uploadColumn.setCellValueFactory(paramFeatures -> {
Pfs0RowModel model = paramFeatures.getValue();
uploadColumn.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Pfs0RowModel, Boolean>, ObservableValue<Boolean>>() {
@Override
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((observableValue, oldValue, newValue) -> {
model.setMarkSelected(newValue);
table.refresh();
});
return booleanProperty;
booleanProperty.addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observableValue, Boolean oldValue, Boolean newValue) {
model.setMarkSelected(newValue);
table.refresh();
}
});
return booleanProperty;
}
});
uploadColumn.setCellFactory(paramFeatures -> new CheckBoxTableCell<>());
uploadColumn.setCellFactory(new Callback<TableColumn<Pfs0RowModel, Boolean>, TableCell<Pfs0RowModel, Boolean>>() {
@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..
Pfs0RowModelTableView -> {
final TableRow<Pfs0RowModel> row = new TableRow<>();
ContextMenu contextMenu = new ContextMenu();
new Callback<TableView<Pfs0RowModel>, TableRow<Pfs0RowModel>>() {
@Override
public TableRow<Pfs0RowModel> call(TableView<Pfs0RowModel> Pfs0RowModelTableView) {
final TableRow<Pfs0RowModel> row = new TableRow<>();
ContextMenu contextMenu = new ContextMenu();
MenuItem openMenuItem = new MenuItem("Open");
openMenuItem.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent actionEvent) {
MediatorControl.getInstance().getContoller().showContentWindow(provider, row.getItem()); // TODO: change to something better
}
});
MenuItem openMenuItem = new MenuItem("Open");
openMenuItem.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent actionEvent) {
MediatorControl.getInstance().getContoller().showContentWindow(provider, row.getItem()); // TODO: change to something better
}
});
contextMenu.getItems().addAll(openMenuItem);
contextMenu.getItems().addAll(openMenuItem);
row.setContextMenu(contextMenu);
row.contextMenuProperty().bind(
Bindings.when(Bindings.isNotNull(row.itemProperty())).then(contextMenu).otherwise((ContextMenu)null)
);
// Just.. don't ask..
row.setOnMouseClicked(mouseEvent -> {
if (!row.isEmpty() && mouseEvent.getButton() == MouseButton.PRIMARY){
Pfs0RowModel thisItem = row.getItem();
thisItem.setMarkSelected(!thisItem.isMarkSelected());
table.refresh();
}
mouseEvent.consume();
});
return row;
row.setContextMenu(contextMenu);
row.contextMenuProperty().bind(
Bindings.when(Bindings.isNotNull(row.itemProperty())).then(contextMenu).otherwise((ContextMenu)null)
);
row.setOnMouseClicked(new EventHandler<MouseEvent>() { // Just.. don't ask..
@Override
public void handle(MouseEvent mouseEvent) {
if (!row.isEmpty() && mouseEvent.getButton() == MouseButton.PRIMARY){
Pfs0RowModel thisItem = row.getItem();
thisItem.setMarkSelected(!thisItem.isMarkSelected());
table.refresh();
}
mouseEvent.consume();
}
});
return row;
}
}
);
table.setItems(rowsObsLst);

View file

@ -30,7 +30,7 @@ import java.util.Locale;
import java.util.ResourceBundle;
public class MainFx extends Application {
public static final String appVersion = "v0.0.2";
public static final String appVersion = "v0.0-SNAPSHOT";
@Override
public void start(Stage primaryStage) throws Exception{

View file

@ -420,9 +420,9 @@
<Insets left="5.0" right="5.0" />
</padding>
</Label>
<TextField fx:id="titleNameTf" editable="false" GridPane.columnIndex="3" GridPane.rowIndex="11" />
<TextField fx:id="productCodeTf" editable="false" GridPane.columnIndex="3" GridPane.rowIndex="12" />
<TextField fx:id="reserved4Tf" editable="false" GridPane.columnIndex="3" GridPane.rowIndex="13" />
<TextField fx:id="titleNameTf" GridPane.columnIndex="3" GridPane.rowIndex="11" />
<TextField fx:id="productCodeTf" GridPane.columnIndex="3" GridPane.rowIndex="12" />
<TextField fx:id="reserved4Tf" GridPane.columnIndex="3" GridPane.rowIndex="13" />
</children>
</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?" />
@ -1138,8 +1138,8 @@
<Insets left="5.0" right="5.0" />
</padding>
</Label>
<TextField fx:id="acidRsa2048publicKeyTf" editable="false" GridPane.columnIndex="3" GridPane.rowIndex="2" />
<TextField fx:id="acidRsa2048signatureTf" editable="false" GridPane.columnIndex="3" GridPane.rowIndex="1" />
<TextField fx:id="acidRsa2048publicKeyTf" GridPane.columnIndex="3" GridPane.rowIndex="2" />
<TextField fx:id="acidRsa2048signatureTf" GridPane.columnIndex="3" GridPane.rowIndex="1" />
<Label text="0x238" GridPane.rowIndex="18">
<padding>
<Insets left="5.0" right="5.0" />