mirror of
https://github.com/aclist/dztui.git
synced 2026-08-29 19:27:13 +02:00
feat: restore map selection
This commit is contained in:
parent
25f19cfd10
commit
38883626f5
@ -377,6 +377,7 @@ class Controller(GObject.GObject):
|
|||||||
if res.status != 200 or not res.parsed:
|
if res.status != 200 or not res.parsed:
|
||||||
# TODO: pop warning dialog, create enum around various failure states
|
# TODO: pop warning dialog, create enum around various failure states
|
||||||
print("failed to parse/timeout error")
|
print("failed to parse/timeout error")
|
||||||
|
self.new_maps = None
|
||||||
self.push_data(None, FilterMode.INITIAL, success=False)
|
self.push_data(None, FilterMode.INITIAL, success=False)
|
||||||
return
|
return
|
||||||
j = res.json
|
j = res.json
|
||||||
@ -387,21 +388,12 @@ class Controller(GObject.GObject):
|
|||||||
j = res.json
|
j = res.json
|
||||||
serv += j["response"]["servers"]
|
serv += j["response"]["servers"]
|
||||||
|
|
||||||
# TODO: ping column pass
|
# TODO: additional ping column pass, collated
|
||||||
parsed = Servers.parse_json(serv)
|
parsed = Servers.parse_json(serv)
|
||||||
self.mediator.filters.set_unique_maps(parsed)
|
self.first_iteration = True
|
||||||
|
self.new_maps = parsed
|
||||||
self.push_data(parsed, FilterMode.INITIAL, success=True)
|
self.push_data(parsed, FilterMode.INITIAL, success=True)
|
||||||
|
|
||||||
#def set_unique_maps(self, records: list) -> None:
|
|
||||||
# if len(records) < 1:
|
|
||||||
# return
|
|
||||||
# u_maps = set([row[1] for row in records])
|
|
||||||
# u_maps = sorted(u_maps)
|
|
||||||
# for m in u_maps:
|
|
||||||
# print(m)
|
|
||||||
# #map_store.append([m])
|
|
||||||
# #self.maps_hr.append(m)
|
|
||||||
|
|
||||||
def get_help_row(self) -> str:
|
def get_help_row(self) -> str:
|
||||||
tv = self.mediator.menu
|
tv = self.mediator.menu
|
||||||
model = self.get_help_store()
|
model = self.get_help_store()
|
||||||
@ -620,8 +612,17 @@ class Controller(GObject.GObject):
|
|||||||
self.push_data(data, FilterMode.INITIAL, success=True)
|
self.push_data(data, FilterMode.INITIAL, success=True)
|
||||||
|
|
||||||
def cleanup(self) -> None:
|
def cleanup(self) -> None:
|
||||||
# TODO: if success failed, throw popup
|
|
||||||
treeview = self.get_active_treeview()
|
treeview = self.get_active_treeview()
|
||||||
|
|
||||||
|
# TODO: signals or other approach to deferring model insertion
|
||||||
|
# after thread closes
|
||||||
|
# cf. servers_loaded signal
|
||||||
|
treeview.set_model(self.to_insert)
|
||||||
|
# CHORE: this is placeholder logic
|
||||||
|
if self.first_iteration:
|
||||||
|
self.mediator.filters.set_unique_maps(self.new_maps)
|
||||||
|
self.first_iteration = False
|
||||||
|
|
||||||
context = self.get_active_context()
|
context = self.get_active_context()
|
||||||
self.emitter.emit("servers_loaded", context)
|
self.emitter.emit("servers_loaded", context)
|
||||||
|
|
||||||
@ -638,20 +639,21 @@ class Controller(GObject.GObject):
|
|||||||
treeview = self.get_active_treeview()
|
treeview = self.get_active_treeview()
|
||||||
manager = treeview.get_filter_man()
|
manager = treeview.get_filter_man()
|
||||||
|
|
||||||
|
self.to_insert = None
|
||||||
|
|
||||||
# TODO:
|
# TODO:
|
||||||
self.success = success
|
self.success = success
|
||||||
if success:
|
if success:
|
||||||
if data is None:
|
if data is None:
|
||||||
insert = None
|
self.to_insert = None
|
||||||
else:
|
else:
|
||||||
# TODO: consolidate into filter manager
|
# TODO: consolidate into filter manager
|
||||||
if mode == FilterMode.INITIAL:
|
if mode == FilterMode.INITIAL:
|
||||||
manager.set_control(data)
|
manager.set_control(data)
|
||||||
# TODO: init maps here
|
|
||||||
manager.filter(mode)
|
manager.filter(mode)
|
||||||
insert = manager.get_model()
|
self.to_insert = manager.get_model()
|
||||||
# TODO: should list store be set outside of this thread?
|
# TODO: should list store be set outside of this thread?
|
||||||
treeview.set_model(insert)
|
# treeview.set_model(self.to_insert)
|
||||||
treeview.set_loaded(True)
|
treeview.set_loaded(True)
|
||||||
GLib.idle_add(self.cleanup)
|
GLib.idle_add(self.cleanup)
|
||||||
|
|
||||||
|
|||||||
@ -49,8 +49,8 @@ class FilteredModelManager:
|
|||||||
|
|
||||||
self.ephemeral_model = self.new_model_from_class(ServerColumns)
|
self.ephemeral_model = self.new_model_from_class(ServerColumns)
|
||||||
|
|
||||||
self.control_model = None
|
self.control_model: list = None
|
||||||
self.filtered = None
|
self.filtered: list = None
|
||||||
self.success = True
|
self.success = True
|
||||||
|
|
||||||
def append_row(self, row: list) -> None:
|
def append_row(self, row: list) -> None:
|
||||||
@ -86,7 +86,7 @@ class FilteredModelManager:
|
|||||||
case FilterMode.MAP:
|
case FilterMode.MAP:
|
||||||
prior_map = self.controller.get_prior_map()
|
prior_map = self.controller.get_prior_map()
|
||||||
|
|
||||||
if prior_map == "All maps":
|
if prior_map == strings.all_maps:
|
||||||
rows = self.filter_map(filters)
|
rows = self.filter_map(filters)
|
||||||
else:
|
else:
|
||||||
rows = self.filter_toggle_on(filters, *args)
|
rows = self.filter_toggle_on(filters, *args)
|
||||||
@ -138,7 +138,7 @@ class FilteredModelManager:
|
|||||||
rows = self.filtered
|
rows = self.filtered
|
||||||
sel_map = self.controller.get_map()
|
sel_map = self.controller.get_map()
|
||||||
|
|
||||||
if sel_map == "All maps":
|
if sel_map == strings.all_maps:
|
||||||
return rows
|
return rows
|
||||||
|
|
||||||
rows = [row for row in rows if row[1] == sel_map]
|
rows = [row for row in rows if row[1] == sel_map]
|
||||||
@ -234,7 +234,7 @@ class FilteredModelManager:
|
|||||||
if row[7] == addr and row[8] == qport:
|
if row[7] == addr and row[8] == qport:
|
||||||
self.control_model.remove(row)
|
self.control_model.remove(row)
|
||||||
|
|
||||||
# self.wipe_cache()
|
self.wipe_cache()
|
||||||
filters = self.controller.get_filters()
|
filters = self.controller.get_filters()
|
||||||
refiltered = self.filter_toggle_on(filters)
|
refiltered = self.filter_toggle_on(filters)
|
||||||
self.set_filtered(refiltered)
|
self.set_filtered(refiltered)
|
||||||
@ -272,10 +272,14 @@ class FilteredModelManager:
|
|||||||
def get_success(self) -> bool:
|
def get_success(self) -> bool:
|
||||||
return self.success
|
return self.success
|
||||||
|
|
||||||
# def wipe_cache(self, full=False) -> None:
|
# NOTE: used when adding/removing rows in-situ in the ephemeral model
|
||||||
# self.success = True
|
# and syncing changes to control model, but ignored for player count/ping updates
|
||||||
# self.filtered = None
|
# cf. remove_from_history(), remove_server()
|
||||||
# self.filter_cache = {}
|
# NOTE: this can most likely be simplified for v7
|
||||||
# self.ping_cache = {}
|
def wipe_cache(self, full=False) -> None:
|
||||||
# if full:
|
self.success = True
|
||||||
# self.control_model = None
|
self.filtered = None
|
||||||
|
self.filter_cache = {}
|
||||||
|
self.ping_cache = {}
|
||||||
|
if full:
|
||||||
|
self.control_model = None
|
||||||
|
|||||||
@ -127,13 +127,18 @@ class FilterPanel(Gtk.Box):
|
|||||||
self.pack_start(el, NO_EXPAND, NO_FILL, NO_PADDING)
|
self.pack_start(el, NO_EXPAND, NO_FILL, NO_PADDING)
|
||||||
|
|
||||||
def set_unique_maps(self, maps: list) -> None:
|
def set_unique_maps(self, maps: list) -> None:
|
||||||
|
if maps is None:
|
||||||
|
return
|
||||||
if len(maps) < 1:
|
if len(maps) < 1:
|
||||||
return
|
return
|
||||||
u_maps = set([row[1] for row in maps])
|
u_maps = set([row[1] for row in maps])
|
||||||
u_maps = sorted(u_maps)
|
u_maps = sorted(u_maps)
|
||||||
|
self.controller.append_map([strings.all_maps])
|
||||||
|
self.selected_map = strings.all_maps
|
||||||
for m in u_maps:
|
for m in u_maps:
|
||||||
self.controller.append_map([m])
|
self.controller.append_map([m])
|
||||||
self.maps_hr.append(m)
|
self.maps_hr.append(m)
|
||||||
|
self.maps_combo.set_active(0)
|
||||||
|
|
||||||
def get_filters(self) -> tuple:
|
def get_filters(self) -> tuple:
|
||||||
filters = []
|
filters = []
|
||||||
@ -144,16 +149,17 @@ class FilterPanel(Gtk.Box):
|
|||||||
filters.append(k)
|
filters.append(k)
|
||||||
return tuple(filters)
|
return tuple(filters)
|
||||||
|
|
||||||
def reinit_panel(self) -> None:
|
# TODO: currently unused
|
||||||
self.keyword_entry.set_text("")
|
# def reinit_panel(self) -> None:
|
||||||
self.keyword_filter = ""
|
# self.keyword_entry.set_text("")
|
||||||
self.reinit_filters()
|
# self.keyword_filter = ""
|
||||||
self.set_visible(False)
|
# self.reinit_filters()
|
||||||
# TODO:
|
# self.set_visible(False)
|
||||||
sel_panel = self.controller.mediator.grid.sel_panel
|
# sel_panel = self.controller.mediator.grid.sel_panel
|
||||||
if sel_panel.is_visible():
|
# if sel_panel.is_visible():
|
||||||
sel_panel.set_visible(False)
|
# sel_panel.set_visible(False)
|
||||||
|
|
||||||
|
# TODO: change filters on a per-tab basis
|
||||||
def reinit_filters(self) -> None:
|
def reinit_filters(self) -> None:
|
||||||
self.enabled_filters = dict(self.default_filters)
|
self.enabled_filters = dict(self.default_filters)
|
||||||
for check in self.checks:
|
for check in self.checks:
|
||||||
@ -162,6 +168,7 @@ class FilterPanel(Gtk.Box):
|
|||||||
check.set_active(state)
|
check.set_active(state)
|
||||||
|
|
||||||
def _on_map_entry_keypress(self, entry: Gtk.Entry, event: Gdk.EventKey) -> None:
|
def _on_map_entry_keypress(self, entry: Gtk.Entry, event: Gdk.EventKey) -> None:
|
||||||
|
# TODO: use activated() signal
|
||||||
match event.keyval:
|
match event.keyval:
|
||||||
case Gdk.KEY_Return:
|
case Gdk.KEY_Return:
|
||||||
text = entry.get_text()
|
text = entry.get_text()
|
||||||
|
|||||||
@ -50,13 +50,13 @@ class RightPanel(Gtk.Box):
|
|||||||
self.refresh_button.set_sensitive(False)
|
self.refresh_button.set_sensitive(False)
|
||||||
|
|
||||||
# TODO: move to filter panel
|
# TODO: move to filter panel
|
||||||
def reinit_maps(self, rows: list) -> None:
|
# def reinit_maps(self, rows: list) -> None:
|
||||||
self.controller.reinit_map_store()
|
# self.controller.reinit_map_store()
|
||||||
# TODO: communicate with controller
|
# # TODO: communicate with controller
|
||||||
# self.controller.clear_map_store()
|
# # self.controller.clear_map_store()
|
||||||
# map_store.append(["All maps"])
|
# # map_store.append(["All maps"])
|
||||||
self.selected = "All maps"
|
# self.selected = "All maps"
|
||||||
self.filters_vbox.set_unique_maps(rows)
|
# self.filters_vbox.set_unique_maps(rows)
|
||||||
|
|
||||||
# TODO: reference
|
# TODO: reference
|
||||||
# def _on_ping_clicked(self, button: Gtk.Button) -> None:
|
# def _on_ping_clicked(self, button: Gtk.Button) -> None:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user