Add type annotations to request_tab_widget.py
This commit is contained in:
parent
30872b4697
commit
b17393432c
@ -20,6 +20,7 @@
|
|||||||
import gi
|
import gi
|
||||||
gi.require_version('GtkSource', '5')
|
gi.require_version('GtkSource', '5')
|
||||||
from gi.repository import Adw, Gtk, GLib, GtkSource, GObject
|
from gi.repository import Adw, Gtk, GLib, GtkSource, GObject
|
||||||
|
from typing import Optional, Set, Dict, List
|
||||||
from .models import HttpRequest, HttpResponse
|
from .models import HttpRequest, HttpResponse
|
||||||
from .widgets.header_row import HeaderRow
|
from .widgets.header_row import HeaderRow
|
||||||
import json
|
import json
|
||||||
@ -32,20 +33,20 @@ class RequestTabWidget(Gtk.Box):
|
|||||||
def __init__(self, tab_id, request=None, response=None, project_id=None, selected_environment_id=None, scripts=None, **kwargs):
|
def __init__(self, tab_id, request=None, response=None, project_id=None, selected_environment_id=None, scripts=None, **kwargs):
|
||||||
super().__init__(orientation=Gtk.Orientation.VERTICAL, **kwargs)
|
super().__init__(orientation=Gtk.Orientation.VERTICAL, **kwargs)
|
||||||
|
|
||||||
self.tab_id = tab_id
|
self.tab_id: str = tab_id
|
||||||
self.request = request or HttpRequest(method="GET", url="", headers={}, body="", syntax="RAW")
|
self.request: HttpRequest = request or HttpRequest(method="GET", url="", headers={}, body="", syntax="RAW")
|
||||||
self.response = response
|
self.response: Optional[HttpResponse] = response
|
||||||
self.modified = False
|
self.modified: bool = False
|
||||||
self.original_request = None
|
self.original_request: Optional[HttpRequest] = None
|
||||||
self.original_scripts = None
|
self.original_scripts = None
|
||||||
self.project_id = project_id
|
self.project_id: Optional[str] = project_id
|
||||||
self.selected_environment_id = selected_environment_id
|
self.selected_environment_id: Optional[str] = selected_environment_id
|
||||||
self.scripts = scripts
|
self.scripts = scripts
|
||||||
self.project_manager = None # Will be injected from window
|
self.project_manager = None # Will be injected from window
|
||||||
self.environment_dropdown = None # Will be created if project_id is set
|
self.environment_dropdown: Optional[Gtk.DropDown] = None
|
||||||
self.env_separator = None # Visual separator after environment dropdown
|
self.env_separator: Optional[Gtk.Separator] = None
|
||||||
self.undefined_variables = set() # Track undefined variables for visual feedback
|
self.undefined_variables: Set[str] = set()
|
||||||
self._update_indicators_timeout_id = None # Debounce timer for indicator updates
|
self._update_indicators_timeout_id: Optional[int] = None
|
||||||
|
|
||||||
# Build the UI
|
# Build the UI
|
||||||
self._build_ui()
|
self._build_ui()
|
||||||
@ -61,7 +62,7 @@ class RequestTabWidget(Gtk.Box):
|
|||||||
# Setup change tracking
|
# Setup change tracking
|
||||||
self._setup_change_tracking()
|
self._setup_change_tracking()
|
||||||
|
|
||||||
def _build_ui(self):
|
def _build_ui(self) -> None:
|
||||||
"""Build the complete UI for this tab."""
|
"""Build the complete UI for this tab."""
|
||||||
|
|
||||||
# URL Input Section - outer container (store as instance var for dynamic updates)
|
# URL Input Section - outer container (store as instance var for dynamic updates)
|
||||||
@ -366,7 +367,7 @@ class RequestTabWidget(Gtk.Box):
|
|||||||
|
|
||||||
self.append(split_pane)
|
self.append(split_pane)
|
||||||
|
|
||||||
def _build_headers_tab(self):
|
def _build_headers_tab(self) -> None:
|
||||||
"""Build the headers tab."""
|
"""Build the headers tab."""
|
||||||
headers_scroll = Gtk.ScrolledWindow()
|
headers_scroll = Gtk.ScrolledWindow()
|
||||||
headers_scroll.set_vexpand(True)
|
headers_scroll.set_vexpand(True)
|
||||||
@ -392,7 +393,7 @@ class RequestTabWidget(Gtk.Box):
|
|||||||
# Add initial empty header row
|
# Add initial empty header row
|
||||||
self._add_header_row()
|
self._add_header_row()
|
||||||
|
|
||||||
def _build_body_tab(self):
|
def _build_body_tab(self) -> None:
|
||||||
"""Build the body tab."""
|
"""Build the body tab."""
|
||||||
body_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0)
|
body_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0)
|
||||||
|
|
||||||
@ -706,7 +707,7 @@ class RequestTabWidget(Gtk.Box):
|
|||||||
self.headers_listbox.remove(parent)
|
self.headers_listbox.remove(parent)
|
||||||
self._on_request_changed(None)
|
self._on_request_changed(None)
|
||||||
|
|
||||||
def _setup_change_tracking(self):
|
def _setup_change_tracking(self) -> None:
|
||||||
"""Setup change tracking for this tab."""
|
"""Setup change tracking for this tab."""
|
||||||
self.url_entry.connect("changed", self._on_request_changed)
|
self.url_entry.connect("changed", self._on_request_changed)
|
||||||
self.method_dropdown.connect("notify::selected", self._on_request_changed)
|
self.method_dropdown.connect("notify::selected", self._on_request_changed)
|
||||||
@ -745,7 +746,7 @@ class RequestTabWidget(Gtk.Box):
|
|||||||
'modified-changed': (GObject.SignalFlags.RUN_FIRST, None, (bool,))
|
'modified-changed': (GObject.SignalFlags.RUN_FIRST, None, (bool,))
|
||||||
}
|
}
|
||||||
|
|
||||||
def _is_different_from_original(self, request):
|
def _is_different_from_original(self, request: HttpRequest) -> bool:
|
||||||
"""Check if current request differs from original."""
|
"""Check if current request differs from original."""
|
||||||
if not self.original_request:
|
if not self.original_request:
|
||||||
return False
|
return False
|
||||||
@ -776,7 +777,7 @@ class RequestTabWidget(Gtk.Box):
|
|||||||
|
|
||||||
return request_changed or scripts_changed
|
return request_changed or scripts_changed
|
||||||
|
|
||||||
def _load_request(self, request):
|
def _load_request(self, request: HttpRequest) -> None:
|
||||||
"""Load a request into this tab's UI."""
|
"""Load a request into this tab's UI."""
|
||||||
# Set method
|
# Set method
|
||||||
methods = ["GET", "POST", "PUT", "DELETE"]
|
methods = ["GET", "POST", "PUT", "DELETE"]
|
||||||
@ -805,7 +806,7 @@ class RequestTabWidget(Gtk.Box):
|
|||||||
if request.syntax in syntax_options:
|
if request.syntax in syntax_options:
|
||||||
self.body_language_dropdown.set_selected(syntax_options.index(request.syntax))
|
self.body_language_dropdown.set_selected(syntax_options.index(request.syntax))
|
||||||
|
|
||||||
def get_request(self):
|
def get_request(self) -> HttpRequest:
|
||||||
"""Build and return HttpRequest from current UI state."""
|
"""Build and return HttpRequest from current UI state."""
|
||||||
method = self.method_dropdown.get_selected_item().get_string()
|
method = self.method_dropdown.get_selected_item().get_string()
|
||||||
url = self.url_entry.get_text().strip()
|
url = self.url_entry.get_text().strip()
|
||||||
@ -868,7 +869,7 @@ class RequestTabWidget(Gtk.Box):
|
|||||||
postprocessing_buffer = self.postprocessing_sourceview.get_buffer()
|
postprocessing_buffer = self.postprocessing_sourceview.get_buffer()
|
||||||
postprocessing_buffer.set_text(scripts.postprocessing)
|
postprocessing_buffer.set_text(scripts.postprocessing)
|
||||||
|
|
||||||
def display_response(self, response):
|
def display_response(self, response: HttpResponse) -> None:
|
||||||
"""Display response in this tab's UI."""
|
"""Display response in this tab's UI."""
|
||||||
self.response = response
|
self.response = response
|
||||||
|
|
||||||
@ -896,7 +897,7 @@ class RequestTabWidget(Gtk.Box):
|
|||||||
language = self._get_language_from_content_type(content_type)
|
language = self._get_language_from_content_type(content_type)
|
||||||
source_buffer.set_language(language)
|
source_buffer.set_language(language)
|
||||||
|
|
||||||
def display_error(self, error):
|
def display_error(self, error: str) -> None:
|
||||||
"""Display error in this tab's UI."""
|
"""Display error in this tab's UI."""
|
||||||
self.status_label.set_text("Error")
|
self.status_label.set_text("Error")
|
||||||
self.time_label.set_text("")
|
self.time_label.set_text("")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user