Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion bitcoin_safe/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,4 @@
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
__version__ = "1.7.1"
__version__ = "2.0.0rc0"
45 changes: 41 additions & 4 deletions bitcoin_safe/gui/qt/initial_cbf_sync_widget.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,11 @@
from dataclasses import dataclass
from enum import Enum
from pathlib import Path
from typing import cast

from bitcoin_safe_lib.gui.qt.signal_tracker import SignalProtocol
from bitcoin_safe_lib.gui.qt.util import age
from PyQt6.QtCore import QLocale, QPointF, QRectF, Qt
from PyQt6.QtCore import QLocale, QPointF, QRectF, Qt, pyqtSignal
from PyQt6.QtGui import (
QColor,
QFont,
Expand All @@ -48,7 +50,15 @@
QPen,
QRadialGradient,
)
from PyQt6.QtWidgets import QHBoxLayout, QLabel, QSizePolicy, QToolTip, QVBoxLayout, QWidget
from PyQt6.QtWidgets import (
QHBoxLayout,
QLabel,
QPushButton,
QSizePolicy,
QToolTip,
QVBoxLayout,
QWidget,
)

from bitcoin_safe.client import ProgressInfo
from bitcoin_safe.config import UserConfig
Expand Down Expand Up @@ -402,6 +412,7 @@ class InitialCbfSyncWidget(QWidget):
"""Shown while CBF sync is running and history list is still empty."""

_PRIVACY_INFO_URL = "https://bitcoin-safe.org/knowledge/compact-block-filters/"
signal_request_open_network_settings = cast(SignalProtocol[[]], pyqtSignal())

def __init__(self, config: UserConfig, parent: QWidget | None = None) -> None:
super().__init__(parent=parent)
Expand Down Expand Up @@ -439,6 +450,22 @@ def _build_ui(self) -> None:
)
self.privacy_help_label.textLabel.setWordWrap(False)

self.network_settings_hint_label = QLabel(self)
self.network_settings_hint_label.setWordWrap(True)
self.network_settings_hint_label.setAlignment(Qt.AlignmentFlag.AlignHCenter)

self.network_settings_button = QPushButton(self)
self.network_settings_button.setSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
self.network_settings_button.clicked.connect(self._open_network_settings)

self.network_settings_row = QVBoxLayout()
self.network_settings_row.setContentsMargins(0, 0, 0, 0)
self.network_settings_row.setSpacing(6)
self.network_settings_row.addWidget(self.network_settings_hint_label)
self.network_settings_row.addWidget(
self.network_settings_button, alignment=Qt.AlignmentFlag.AlignHCenter
)

self.map_widget = WorldPeerMapWidget(parent=self)

self.progress_label = QLabel(self)
Expand Down Expand Up @@ -467,6 +494,7 @@ def _build_ui(self) -> None:
layout.addWidget(self.title_label)
layout.addWidget(self.subtitle_label)
layout.addWidget(self.privacy_help_label, alignment=Qt.AlignmentFlag.AlignHCenter)
layout.addLayout(self.network_settings_row)
layout.addWidget(self.map_widget)
layout.addWidget(self.progress_label)
layout.addWidget(self.progress_bar)
Expand Down Expand Up @@ -515,8 +543,7 @@ def updateUi(self) -> None:
self.title_label.setText(self.tr("Scanning Bitcoin blockchain"))
self.subtitle_label.setText(
self.tr(
"During first sync, Bitcoin Safe fetches compact block summaries from multiple Bitcoin nodes. "
"This is a private way to download block data."
"Bitcoin Safe downloads block summaries from multiple nodes for privacy. After this initial sync, updates will be fast."
)
)
self.privacy_help_label.set_icon_as_help(
Expand All @@ -527,6 +554,13 @@ def updateUi(self) -> None:
click_url=self._PRIVACY_INFO_URL,
)
self.privacy_help_label.setText(self.tr("Why this protects privacy (learn more)"))
self.network_settings_hint_label.setText(
self.tr(
"If you have your own Electrum server or do not want to wait, connect to a public "
"Electrum server in network settings."
)
)
self.network_settings_button.setText(self.tr("Network settings"))
if self._last_progress_info:
self.set_progress_info(self._last_progress_info)
else:
Expand Down Expand Up @@ -611,3 +645,6 @@ def _refresh_points_and_legend(self) -> None:
)
)
self.node_legend_label.set_icon_as_help(tooltip=self.tr("Discovered bitcoin nodes."))

def _open_network_settings(self) -> None:
self.signal_request_open_network_settings.emit()
3 changes: 3 additions & 0 deletions bitcoin_safe/gui/qt/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -2453,6 +2453,9 @@ def add_qt_wallet(

self.language_chooser.add_signal_language_switch(self.signals.language_switch)
self.wallet_functions.wallet_signals[qt_wallet.wallet.id].show_address.connect(self.show_address)
self.signal_tracker.connect(
qt_wallet.signal_request_open_network_settings, self.open_network_settings
)

self.p2p_listening_update_lists(UpdateFilter())
qt_wallet.wallet_signals.updated.emit(UpdateFilter(reason=UpdateFilterReason.WalletOpened))
Expand Down
5 changes: 5 additions & 0 deletions bitcoin_safe/gui/qt/qt_wallet.py
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,7 @@ class QTWallet(QtWalletBase, BaseSaveableClass):
signal_client_log_str = cast(SignalProtocol[[str]], pyqtSignal(str))
signal_wallet_update = cast(SignalProtocol[[UpdateInfo]], pyqtSignal(UpdateInfo))
signal_refresh_sync_status = cast(SignalProtocol[[]], pyqtSignal())
signal_request_open_network_settings = cast(SignalProtocol[[]], pyqtSignal())

@staticmethod
def cls_kwargs(
Expand Down Expand Up @@ -1453,6 +1454,10 @@ def _create_hist_tab(
self.history_tab_content_stack.addWidget(self.history_tab_content)

self.history_initial_sync_widget = InitialCbfSyncWidget(config=self.config, parent=tab)
self.signal_tracker.connect(
self.history_initial_sync_widget.signal_request_open_network_settings,
self.signal_request_open_network_settings.emit,
)
self.history_tab_content_stack.addWidget(self.history_initial_sync_widget)

if history_list_with_toolbar:
Expand Down
7 changes: 6 additions & 1 deletion bitcoin_safe/network_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -452,7 +452,12 @@ def __init__(
"""Initialize instance."""
super().__init__()
self.network = network
self.server_type: BlockchainType = BlockchainType.Electrum
active_types = BlockchainType.active_types(network)
self.server_type: BlockchainType = (
BlockchainType.CompactBlockFilter
if BlockchainType.CompactBlockFilter in active_types
else BlockchainType.Electrum
)
electrum_config = get_electrum_configs(network)["default"]
self.electrum_url: str = electrum_config.url
self.electrum_use_ssl: bool = electrum_config.use_ssl
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
name = "bitcoin-safe"
# the version here and in all other places in this toml are updated automatically
# from the source: bitcoin_safe/__init__.py
version = "1.7.1"
version = "2.0.0rc0"
description = "A bitcoin savings wallet for the entire family."
authors = [ "andreasgriffin <andreasgriffin@proton.me>",]
license = "GPL-3.0"
Expand Down
Loading
Loading