| ... |
... |
@@ -166,9 +166,9 @@ def add_account(self, account: str, initial: bool = False) -> None: |
|
166
|
166
|
if not initial:
|
|
167
|
167
|
self._accounts[account].show()
|
|
168
|
168
|
|
|
169
|
|
- def select_account(self, account: str) -> None:
|
|
|
169
|
+ def select_account(self, account: str, page: Optional[str] = None) -> None:
|
|
170
|
170
|
try:
|
|
171
|
|
- self._accounts[account].select()
|
|
|
171
|
+ self._accounts[account].select(page)
|
|
172
|
172
|
except KeyError:
|
|
173
|
173
|
log.warning('select_account() failed, account %s not found',
|
|
174
|
174
|
account)
|
| ... |
... |
@@ -292,6 +292,12 @@ def _on_sub_menu_row_activated(self, |
|
292
|
292
|
listbox.account,
|
|
293
|
293
|
f'{listbox.account}-{row.name}')
|
|
294
|
294
|
|
|
|
295
|
+ def set_page(self, account: str, page_name: str) -> None:
|
|
|
296
|
+ sub_menu = cast(
|
|
|
297
|
+ AccountSubMenu, self._stack.get_child_by_name(f'{account}-menu'))
|
|
|
298
|
+ sub_menu.select_row_by_name(page_name)
|
|
|
299
|
+ self.emit('menu-activated', account, f'{account}-{page_name}')
|
|
|
300
|
+
|
|
295
|
301
|
def update_account_label(self, account: str) -> None:
|
|
296
|
302
|
self._accounts_listbox.invalidate_sort()
|
|
297
|
303
|
sub_menu = cast(
|
| ... |
... |
@@ -325,6 +331,14 @@ def __init__(self, account: str) -> None: |
|
325
|
331
|
def account(self) -> str:
|
|
326
|
332
|
return self._account
|
|
327
|
333
|
|
|
|
334
|
+ def select_row_by_name(self, row_name: str) -> None:
|
|
|
335
|
+ for row in self.get_children():
|
|
|
336
|
+ if not isinstance(row, PageMenuItem):
|
|
|
337
|
+ continue
|
|
|
338
|
+ if row.name == row_name:
|
|
|
339
|
+ self.select_row(row)
|
|
|
340
|
+ return
|
|
|
341
|
+
|
|
328
|
342
|
def update(self) -> None:
|
|
329
|
343
|
self.emit('update', self._account)
|
|
330
|
344
|
|
| ... |
... |
@@ -443,8 +457,10 @@ def __init__(self, |
|
443
|
457
|
self._account_row = AccountRow(account)
|
|
444
|
458
|
self._menu.add_account(self._account_row)
|
|
445
|
459
|
|
|
446
|
|
- def select(self) -> None:
|
|
|
460
|
+ def select(self, page_name: Optional[str] = None) -> None:
|
|
447
|
461
|
self._account_row.emit('activate')
|
|
|
462
|
+ if page_name is not None:
|
|
|
463
|
+ self._menu.set_page(self._account, page_name)
|
|
448
|
464
|
|
|
449
|
465
|
def show(self) -> None:
|
|
450
|
466
|
self._menu.show_all()
|