Replace tab bars with stack switchers for simpler navigation
Replaces AdwTabView/AdwTabBar with GtkStack/GtkStackSwitcher in both request and response sections to prevent tab reordering and provide a more compact UI without close buttons.
This commit is contained in:
parent
a921126b9d
commit
06c4bd6dfa
@ -86,20 +86,18 @@ class RosterWindow(Adw.ApplicationWindow):
|
|||||||
|
|
||||||
def _setup_request_tabs(self):
|
def _setup_request_tabs(self):
|
||||||
"""Create request tabs programmatically."""
|
"""Create request tabs programmatically."""
|
||||||
# Create tab view
|
# Create stack for switching between pages
|
||||||
self.request_tab_view = Adw.TabView()
|
self.request_stack = Gtk.Stack()
|
||||||
|
self.request_stack.set_vexpand(True)
|
||||||
|
|
||||||
# Prevent tabs from being closed
|
# Create stack switcher for the tabs
|
||||||
self.request_tab_view.connect("close-page", lambda view, page: True)
|
request_switcher = Gtk.StackSwitcher()
|
||||||
|
request_switcher.set_stack(self.request_stack)
|
||||||
|
request_switcher.set_halign(Gtk.Align.CENTER)
|
||||||
|
|
||||||
# Create tab bar to show tabs
|
# Add switcher and stack to container
|
||||||
request_tab_bar = Adw.TabBar()
|
self.request_tabs_container.append(request_switcher)
|
||||||
request_tab_bar.set_view(self.request_tab_view)
|
self.request_tabs_container.append(self.request_stack)
|
||||||
request_tab_bar.set_autohide(False)
|
|
||||||
|
|
||||||
# Add tab bar and view to container
|
|
||||||
self.request_tabs_container.append(request_tab_bar)
|
|
||||||
self.request_tabs_container.append(self.request_tab_view)
|
|
||||||
|
|
||||||
# Headers tab
|
# Headers tab
|
||||||
headers_scroll = Gtk.ScrolledWindow()
|
headers_scroll = Gtk.ScrolledWindow()
|
||||||
@ -119,8 +117,7 @@ class RosterWindow(Adw.ApplicationWindow):
|
|||||||
self.add_header_button.connect("clicked", self.on_add_header_clicked)
|
self.add_header_button.connect("clicked", self.on_add_header_clicked)
|
||||||
headers_box.append(self.add_header_button)
|
headers_box.append(self.add_header_button)
|
||||||
|
|
||||||
headers_page = self.request_tab_view.append(headers_box)
|
self.request_stack.add_titled(headers_box, "headers", "Headers")
|
||||||
headers_page.set_title("Headers")
|
|
||||||
|
|
||||||
# Body tab
|
# Body tab
|
||||||
body_scroll = Gtk.ScrolledWindow()
|
body_scroll = Gtk.ScrolledWindow()
|
||||||
@ -133,25 +130,22 @@ class RosterWindow(Adw.ApplicationWindow):
|
|||||||
self.body_textview.set_bottom_margin(12)
|
self.body_textview.set_bottom_margin(12)
|
||||||
body_scroll.set_child(self.body_textview)
|
body_scroll.set_child(self.body_textview)
|
||||||
|
|
||||||
body_page = self.request_tab_view.append(body_scroll)
|
self.request_stack.add_titled(body_scroll, "body", "Body")
|
||||||
body_page.set_title("Body")
|
|
||||||
|
|
||||||
def _setup_response_tabs(self):
|
def _setup_response_tabs(self):
|
||||||
"""Create response tabs programmatically."""
|
"""Create response tabs programmatically."""
|
||||||
# Create tab view
|
# Create stack for switching between pages
|
||||||
self.response_tab_view = Adw.TabView()
|
self.response_stack = Gtk.Stack()
|
||||||
|
self.response_stack.set_vexpand(True)
|
||||||
|
|
||||||
# Prevent tabs from being closed
|
# Create stack switcher for the tabs
|
||||||
self.response_tab_view.connect("close-page", lambda view, page: True)
|
response_switcher = Gtk.StackSwitcher()
|
||||||
|
response_switcher.set_stack(self.response_stack)
|
||||||
|
response_switcher.set_halign(Gtk.Align.CENTER)
|
||||||
|
|
||||||
# Create tab bar to show tabs
|
# Add switcher and stack to container
|
||||||
response_tab_bar = Adw.TabBar()
|
self.response_tabs_container.append(response_switcher)
|
||||||
response_tab_bar.set_view(self.response_tab_view)
|
self.response_tabs_container.append(self.response_stack)
|
||||||
response_tab_bar.set_autohide(False)
|
|
||||||
|
|
||||||
# Add tab bar and view to container
|
|
||||||
self.response_tabs_container.append(response_tab_bar)
|
|
||||||
self.response_tabs_container.append(self.response_tab_view)
|
|
||||||
|
|
||||||
# Response Headers tab
|
# Response Headers tab
|
||||||
headers_scroll = Gtk.ScrolledWindow()
|
headers_scroll = Gtk.ScrolledWindow()
|
||||||
@ -165,8 +159,7 @@ class RosterWindow(Adw.ApplicationWindow):
|
|||||||
self.response_headers_textview.set_bottom_margin(12)
|
self.response_headers_textview.set_bottom_margin(12)
|
||||||
headers_scroll.set_child(self.response_headers_textview)
|
headers_scroll.set_child(self.response_headers_textview)
|
||||||
|
|
||||||
headers_page = self.response_tab_view.append(headers_scroll)
|
self.response_stack.add_titled(headers_scroll, "headers", "Headers")
|
||||||
headers_page.set_title("Headers")
|
|
||||||
|
|
||||||
# Response Body tab
|
# Response Body tab
|
||||||
body_scroll = Gtk.ScrolledWindow()
|
body_scroll = Gtk.ScrolledWindow()
|
||||||
@ -180,8 +173,7 @@ class RosterWindow(Adw.ApplicationWindow):
|
|||||||
self.response_body_textview.set_bottom_margin(12)
|
self.response_body_textview.set_bottom_margin(12)
|
||||||
body_scroll.set_child(self.response_body_textview)
|
body_scroll.set_child(self.response_body_textview)
|
||||||
|
|
||||||
body_page = self.response_tab_view.append(body_scroll)
|
self.response_stack.add_titled(body_scroll, "body", "Body")
|
||||||
body_page.set_title("Body")
|
|
||||||
|
|
||||||
@Gtk.Template.Callback()
|
@Gtk.Template.Callback()
|
||||||
def on_send_clicked(self, button):
|
def on_send_clicked(self, button):
|
||||||
@ -383,7 +375,7 @@ class RosterWindow(Adw.ApplicationWindow):
|
|||||||
buffer.set_text(request.body)
|
buffer.set_text(request.body)
|
||||||
|
|
||||||
# Switch to headers tab
|
# Switch to headers tab
|
||||||
self.request_tab_view.set_selected_page(self.request_tab_view.get_nth_page(0))
|
self.request_stack.set_visible_child_name("headers")
|
||||||
|
|
||||||
self._show_toast("Request loaded from history")
|
self._show_toast("Request loaded from history")
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user