1
0

Merge pull request #9284 from accumulator/update_recently_opened_sync

qt: keep list of recently used wallets in sync across windows
This commit is contained in:
accumulator
2024-11-05 15:02:38 +01:00
committed by GitHub
2 changed files with 23 additions and 15 deletions

View File

@@ -497,6 +497,7 @@ class Daemon(Logger):
wallet = self._load_wallet(path, password, upgrade=upgrade, config=self.config)
wallet.start_network(self.network)
self.add_wallet(wallet)
self.update_recently_opened_wallets(path)
return wallet
@staticmethod
@@ -542,6 +543,7 @@ class Daemon(Logger):
self.stop_wallet(path)
if os.path.exists(path):
os.unlink(path)
self.update_recently_opened_wallets(path, remove=True)
return True
return False
@@ -704,3 +706,14 @@ class Daemon(Logger):
self._check_password_for_directory(
old_password=old_password, new_password=new_password, wallet_dir=wallet_dir)
return True
def update_recently_opened_wallets(self, wallet_path, *, remove: bool = False):
recent = self.config.RECENTLY_OPEN_WALLET_FILES or []
if wallet_path in recent:
recent.remove(wallet_path)
if not remove:
recent.insert(0, wallet_path)
recent = [path for path in recent if os.path.exists(path)]
recent = recent[:5]
self.config.RECENTLY_OPEN_WALLET_FILES = recent
util.trigger_callback('recently_opened_wallets_update')

View File

@@ -491,6 +491,10 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger, QtEventListener):
def on_event_proxy_set(self, *args):
self.tor_button.setVisible(False)
@qt_event_listener
def on_event_recently_opened_wallets_update(self, *args):
self.update_recently_opened_menu()
def close_wallet(self):
if self.wallet:
self.logger.info(f'close_wallet {self.wallet.storage.path}')
@@ -498,7 +502,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger, QtEventListener):
@profiler
def load_wallet(self, wallet: Abstract_Wallet):
self.update_recently_visited(wallet.storage.path)
self.update_recently_opened_menu()
if wallet.has_lightning():
util.trigger_callback('channels_updated', wallet)
self.need_update.set()
@@ -643,24 +647,15 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger, QtEventListener):
self.show_message(msg, title=_("Wallet backup created"))
return True
def update_recently_visited(self, filename):
recent = self.config.RECENTLY_OPEN_WALLET_FILES or []
try:
sorted(recent)
except Exception:
recent = []
if filename in recent:
recent.remove(filename)
recent.insert(0, filename)
recent = [path for path in recent if os.path.exists(path)]
recent = recent[:5]
self.config.RECENTLY_OPEN_WALLET_FILES = recent
def update_recently_opened_menu(self):
recent = self.config.RECENTLY_OPEN_WALLET_FILES
self.recently_visited_menu.clear()
for i, k in enumerate(sorted(recent)):
for i, k in enumerate(recent):
b = os.path.basename(k)
def loader(k):
return lambda: self.gui_object.new_window(k)
self.recently_visited_menu.addAction(b, loader(k)).setShortcut(QKeySequence("Ctrl+%d"%(i+1)))
self.recently_visited_menu.addAction(b, loader(k)).setShortcut(QKeySequence("Ctrl+%d" % (i+1)))
self.recently_visited_menu.setEnabled(bool(len(recent)))
def get_wallet_folder(self):