From efb81555bdb32ecf4ad4b4d2fc1c41574272a075 Mon Sep 17 00:00:00 2001 From: Craig Raw Date: Thu, 5 Feb 2026 15:38:41 +0200 Subject: [PATCH] add view menu item to toggle address chunk display formatting --- .../sparrowwallet/sparrow/AppController.java | 30 +++++++++++++++---- .../com/sparrowwallet/sparrow/io/Config.java | 10 +++++++ .../com/sparrowwallet/sparrow/app.fxml | 7 ++++- .../com/sparrowwallet/sparrow/darktheme.css | 10 +++++-- .../com/sparrowwallet/sparrow/general.css | 10 ++++--- 5 files changed, 53 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/sparrowwallet/sparrow/AppController.java b/src/main/java/com/sparrowwallet/sparrow/AppController.java index 9a52fc32..00ab0af3 100644 --- a/src/main/java/com/sparrowwallet/sparrow/AppController.java +++ b/src/main/java/com/sparrowwallet/sparrow/AppController.java @@ -138,6 +138,13 @@ public class AppController implements Initializable { @FXML private ToggleGroup unitFormat; + @FXML + private CheckMenuItem chunkAddresses; + + @FXML + private CheckMenuItem hideEmptyUsedAddresses; + private static final BooleanProperty hideEmptyUsedAddressesProperty = new SimpleBooleanProperty(); + @FXML private ToggleGroup theme; @@ -145,10 +152,6 @@ public class AppController implements Initializable { private CheckMenuItem openWalletsInNewWindows; private static final BooleanProperty openWalletsInNewWindowsProperty = new SimpleBooleanProperty(); - @FXML - private CheckMenuItem hideEmptyUsedAddresses; - private static final BooleanProperty hideEmptyUsedAddressesProperty = new SimpleBooleanProperty(); - @FXML private CheckMenuItem hideAmounts; @@ -373,6 +376,13 @@ public class AppController implements Initializable { Optional selectedFormatToggle = unitFormat.getToggles().stream().filter(toggle -> selectedFormat.equals(toggle.getUserData())).findFirst(); selectedFormatToggle.ifPresent(toggle -> unitFormat.selectToggle(toggle)); + chunkAddresses.setSelected(Config.get().isChunkAddresses()); + if(Config.get().isChunkAddresses()) { + rootStack.getStyleClass().add("chunk-addresses"); + } + hideEmptyUsedAddressesProperty.set(Config.get().isHideEmptyUsedAddresses()); + hideEmptyUsedAddresses.selectedProperty().bindBidirectional(hideEmptyUsedAddressesProperty); + Theme configTheme = Config.get().getTheme(); if(configTheme == null) { configTheme = Theme.LIGHT; @@ -385,8 +395,6 @@ public class AppController implements Initializable { openWalletsInNewWindowsProperty.set(Config.get().isOpenWalletsInNewWindows()); openWalletsInNewWindows.selectedProperty().bindBidirectional(openWalletsInNewWindowsProperty); - hideEmptyUsedAddressesProperty.set(Config.get().isHideEmptyUsedAddresses()); - hideEmptyUsedAddresses.selectedProperty().bindBidirectional(hideEmptyUsedAddressesProperty); hideAmounts.setSelected(Config.get().isHideAmounts()); useHdCameraResolutionProperty.set(Config.get().getWebcamResolution() == null || Config.get().getWebcamResolution().isWidescreenAspect()); useHdCameraResolution.selectedProperty().bindBidirectional(useHdCameraResolutionProperty); @@ -946,6 +954,16 @@ public class AppController implements Initializable { EventManager.get().post(new OpenWalletsNewWindowsStatusEvent(item.isSelected())); } + public void chunkAddresses(ActionEvent event) { + CheckMenuItem item = (CheckMenuItem)event.getSource(); + Config.get().setChunkAddresses(item.isSelected()); + if(item.isSelected() && !rootStack.getStyleClass().contains("chunk-addresses")) { + rootStack.getStyleClass().add("chunk-addresses"); + } else { + rootStack.getStyleClass().remove("chunk-addresses"); + } + } + public void hideEmptyUsedAddresses(ActionEvent event) { CheckMenuItem item = (CheckMenuItem)event.getSource(); Config.get().setHideEmptyUsedAddresses(item.isSelected()); diff --git a/src/main/java/com/sparrowwallet/sparrow/io/Config.java b/src/main/java/com/sparrowwallet/sparrow/io/Config.java index 06dda954..2f9e2ad2 100644 --- a/src/main/java/com/sparrowwallet/sparrow/io/Config.java +++ b/src/main/java/com/sparrowwallet/sparrow/io/Config.java @@ -47,6 +47,7 @@ public class Config { private boolean checkNewVersions = true; private Theme theme; private boolean openWalletsInNewWindows = false; + private boolean chunkAddresses = true; private boolean hideEmptyUsedAddresses = false; private boolean hideAmounts = false; private boolean showTransactionHex = true; @@ -297,6 +298,15 @@ public class Config { flush(); } + public boolean isChunkAddresses() { + return chunkAddresses; + } + + public void setChunkAddresses(boolean chunkAddresses) { + this.chunkAddresses = chunkAddresses; + flush(); + } + public boolean isHideEmptyUsedAddresses() { return hideEmptyUsedAddresses; } diff --git a/src/main/resources/com/sparrowwallet/sparrow/app.fxml b/src/main/resources/com/sparrowwallet/sparrow/app.fxml index ba58bf40..890a5734 100644 --- a/src/main/resources/com/sparrowwallet/sparrow/app.fxml +++ b/src/main/resources/com/sparrowwallet/sparrow/app.fxml @@ -99,6 +99,12 @@ + + + + + + @@ -119,7 +125,6 @@ - diff --git a/src/main/resources/com/sparrowwallet/sparrow/darktheme.css b/src/main/resources/com/sparrowwallet/sparrow/darktheme.css index 111c40de..afa9d3cd 100644 --- a/src/main/resources/com/sparrowwallet/sparrow/darktheme.css +++ b/src/main/resources/com/sparrowwallet/sparrow/darktheme.css @@ -382,14 +382,18 @@ HorizontalHeaderColumn > TableColumnHeader.column-header.table-column{ -fx-fill: lightgray; } -.root .tree-table-view .address-chunk, .root .text-field .address-chunk, .root .tooltip .address-chunk { +.root .tree-table-view .address-chunk, +.root .text-field .address-chunk, +.root .tooltip .address-chunk { -fx-fill: white; } -.root .text-field .address-chunk.alternate, .root .label .address-chunk.alternate, .root .tree-table-view:focused .address-chunk.alternate { +.root #rootStack.chunk-addresses .text-field .address-chunk.alternate, +.root #rootStack.chunk-addresses .label .address-chunk.alternate, +.root #rootStack.chunk-addresses .tree-table-view:focused .address-chunk.alternate { -fx-fill: derive(-fx-text-inner-color, -35%); } -.root .tree-table-view .tree-table-row-cell:selected .address-chunk.alternate { +.root #rootStack.chunk-addresses .tree-table-view .tree-table-row-cell:selected .address-chunk.alternate { -fx-fill: derive(-fx-selection-bar-text, -35%); } diff --git a/src/main/resources/com/sparrowwallet/sparrow/general.css b/src/main/resources/com/sparrowwallet/sparrow/general.css index 09dbe4e1..edcbd077 100644 --- a/src/main/resources/com/sparrowwallet/sparrow/general.css +++ b/src/main/resources/com/sparrowwallet/sparrow/general.css @@ -350,18 +350,20 @@ CellView > .text-input.text-field { -fx-fill: white; } -.text-field .address-chunk.alternate, .label .address-chunk.alternate, .tree-table-view:focused .address-chunk.alternate { +#rootStack.chunk-addresses .text-field .address-chunk.alternate, +#rootStack.chunk-addresses .label .address-chunk.alternate, +#rootStack.chunk-addresses .tree-table-view:focused .address-chunk.alternate { -fx-fill: derive(-fx-text-inner-color, 70%); } -.tooltip .address-chunk.alternate { +#rootStack.chunk-addresses .tooltip .address-chunk.alternate { -fx-fill: derive(gray, 60%); } -.tree-table-view:focused .tree-table-row-cell:selected .address-chunk.alternate { +#rootStack.chunk-addresses .tree-table-view:focused .tree-table-row-cell:selected .address-chunk.alternate { -fx-fill: derive(-fx-selection-bar-text, -15%); } -.tree-table-view .tree-table-row-cell:selected .address-chunk.alternate { +#rootStack.chunk-addresses .tree-table-view .tree-table-row-cell:selected .address-chunk.alternate { -fx-fill: derive(-fx-selection-bar-text, 60%); }