From a5fefe9239feb964c95b36e824a2c16fa1e310ad Mon Sep 17 00:00:00 2001 From: dan-schmierer Date: Sat, 14 Feb 2015 02:32:13 +0900 Subject: [PATCH 1/4] Added toggle sidebar feature --- pudb/debugger.py | 18 ++++++++++++++++++ pudb/settings.py | 2 ++ 2 files changed, 20 insertions(+) diff --git a/pudb/debugger.py b/pudb/debugger.py index a221a2a1..2cf96ce6 100644 --- a/pudb/debugger.py +++ b/pudb/debugger.py @@ -673,6 +673,8 @@ def clear_cmdline_history(btn): urwid.AttrMap(self.columns, "background"), header)) + self._toggle_sidebar(CONFIG["sidebar_visible"]) + # }}} def change_rhs_box(name, index, direction, w, size, key): @@ -1614,6 +1616,14 @@ def shrink_sidebar(w, size, key): self.columns.column_types[1] = "weight", weight self.columns._invalidate() + def toggle_sidebar(w, size, key): + from pudb.settings import save_config + + CONFIG["sidebar_visible"] = not CONFIG["sidebar_visible"] + save_config(CONFIG) + + self._toggle_sidebar(CONFIG["sidebar_visible"]) + self.rhs_col_sigwrap.listen("=", max_sidebar) self.rhs_col_sigwrap.listen("+", grow_sidebar) self.rhs_col_sigwrap.listen("_", min_sidebar) @@ -1722,6 +1732,7 @@ def help(w, size, key): self.top.listen("V", RHColumnFocuser(0)) self.top.listen("S", RHColumnFocuser(1)) self.top.listen("B", RHColumnFocuser(2)) + self.top.listen("ctrl ^", toggle_sidebar) self.top.listen("q", quit) self.top.listen("ctrl p", do_edit_config) @@ -1860,6 +1871,13 @@ def __call__(subself, w, size, key): return self.event_loop(w)[0] + def _toggle_sidebar(self, visible): + if visible: + self.columns.column_types[1] = "weight", float(CONFIG["sidebar_width"]) + else: + self.columns.column_types[1] = "given", 0 + self.columns._invalidate() + @staticmethod def setup_palette(screen): may_use_fancy_formats = not hasattr(urwid.escape, "_fg_attr_xterm") diff --git a/pudb/settings.py b/pudb/settings.py index 96b4adaf..77fa57f9 100644 --- a/pudb/settings.py +++ b/pudb/settings.py @@ -76,6 +76,7 @@ def load_config(): conf_dict.setdefault("wrap_variables", True) conf_dict.setdefault("display", "auto") + conf_dict.setdefault("sidebar_visible", True) conf_dict.setdefault("prompt_on_quit", True) @@ -91,6 +92,7 @@ def normalize_bool_inplace(name): normalize_bool_inplace("line_numbers") normalize_bool_inplace("wrap_variables") normalize_bool_inplace("prompt_on_quit") + normalize_bool_inplace("sidebar_visible") return conf_dict From 78e6547263f13093053be75f5ef6c3dd30684095 Mon Sep 17 00:00:00 2001 From: dan-schmierer Date: Sat, 14 Feb 2015 17:02:33 +0900 Subject: [PATCH 2/4] Add help text for toggle sidebar command --- pudb/debugger.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pudb/debugger.py b/pudb/debugger.py index 2cf96ce6..047c33aa 100644 --- a/pudb/debugger.py +++ b/pudb/debugger.py @@ -90,6 +90,7 @@ def newfunc(*fargs, **fkeywords): +/- - grow/shrink sidebar _/= - minimize/maximize sidebar [/] - grow/shrink relative size of active sidebar box + Ctrl-^ - toggle sidebar display Keys in variables list: \ - expand/collapse From 3b6194e6f674c9cba914e9348b725e741c30f456 Mon Sep 17 00:00:00 2001 From: dan-schmierer Date: Sun, 15 Feb 2015 17:58:36 +0900 Subject: [PATCH 3/4] disable sidebar events, hide separator when sidebar not visible --- pudb/debugger.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pudb/debugger.py b/pudb/debugger.py index 047c33aa..7ef612d4 100644 --- a/pudb/debugger.py +++ b/pudb/debugger.py @@ -1623,6 +1623,9 @@ def toggle_sidebar(w, size, key): CONFIG["sidebar_visible"] = not CONFIG["sidebar_visible"] save_config(CONFIG) + if not CONFIG["sidebar_visible"]: + self.columns.set_focus(self.lhs_col) + self._toggle_sidebar(CONFIG["sidebar_visible"]) self.rhs_col_sigwrap.listen("=", max_sidebar) @@ -1708,8 +1711,9 @@ def __init__(self, idx): self.idx = idx def __call__(subself, w, size, key): - self.columns.set_focus(self.rhs_col_sigwrap) - self.rhs_col.set_focus(self.rhs_col.widget_list[subself.idx]) + if CONFIG["sidebar_visible"]: + self.columns.set_focus(self.rhs_col_sigwrap) + self.rhs_col.set_focus(self.rhs_col.widget_list[subself.idx]) def quit(w, size, key): self.debugger.set_quit() @@ -1874,8 +1878,10 @@ def __call__(subself, w, size, key): def _toggle_sidebar(self, visible): if visible: + self.columns.dividechars = 1 self.columns.column_types[1] = "weight", float(CONFIG["sidebar_width"]) else: + self.columns.dividechars = 0 self.columns.column_types[1] = "given", 0 self.columns._invalidate() From 730e2eab0386065ca90481c855187849a8a3fb2f Mon Sep 17 00:00:00 2001 From: dan-schmierer Date: Mon, 16 Feb 2015 22:35:59 +0900 Subject: [PATCH 4/4] Ensure sidebar is visible when focussing rh columns --- pudb/debugger.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/pudb/debugger.py b/pudb/debugger.py index 7ef612d4..9165de5d 100644 --- a/pudb/debugger.py +++ b/pudb/debugger.py @@ -1711,9 +1711,16 @@ def __init__(self, idx): self.idx = idx def __call__(subself, w, size, key): - if CONFIG["sidebar_visible"]: - self.columns.set_focus(self.rhs_col_sigwrap) - self.rhs_col.set_focus(self.rhs_col.widget_list[subself.idx]) + from pudb.settings import save_config + + # ensure sidebar is visible when focussing rh columns + if not CONFIG["sidebar_visible"]: + CONFIG["sidebar_visible"] = True + save_config(CONFIG) + self._toggle_sidebar(CONFIG["sidebar_visible"]) + + self.columns.set_focus(self.rhs_col_sigwrap) + self.rhs_col.set_focus(self.rhs_col.widget_list[subself.idx]) def quit(w, size, key): self.debugger.set_quit()