Added a search feature

This commit is contained in:
Lyx committed 2025-03-15 10:52:58 +01:00
1 parent 5d13037367
commit 59fc72d0c1
3 files changed
+36 -2

No files matched your search

Binary file not shown.
Binary file not shown.
+36 -2
View File
@@ -8,15 +8,15 @@ def selectCity():
cities = list(cities.keys()) cities = list(cities.keys())
cities.append('Exit') cities.append('Exit')
selected = 0 selected = 0
search_mode = False
while True: while True:
clear() # Assuming you have a 'clear' function that clears the screen clear() # Assuming you have a 'clear' function that clears the screen
print("Select a city:") print('Select a city or hit "/" to search:')
for i, city in enumerate(cities): for i, city in enumerate(cities):
prefix = "> " if i == selected else " " prefix = "> " if i == selected else " "
print(prefix + city) print(prefix + city)
key = readchar.readkey() key = readchar.readkey()
if key == readchar.key.UP or key == 'k' and selected > 0: if key == readchar.key.UP or key == 'k' and selected > 0:
selected -= 1 selected -= 1
elif key == readchar.key.DOWN or key == 'j' and selected < len(cities) - 1: elif key == readchar.key.DOWN or key == 'j' and selected < len(cities) - 1:
@@ -27,6 +27,40 @@ def selectCity():
return cities[selected] return cities[selected]
else: else:
sys.exit() sys.exit()
elif key == "/":
search_mode = True
search_query = ""
all_cities = cities # Keep original city list
filtered_cities = all_cities # Start with all cities
while search_mode:
clear()
print(f"Search mode ON | Query: {search_query}")
# Show filtered results
for city in filtered_cities:
print(" " + city)
key = readchar.readkey()
if key == readchar.key.ESC: # Exit search mode
search_mode = False
filtered_cities = all_cities # Reset filter
search_query = ""
elif key == readchar.key.BACKSPACE and len(search_query) > 0: # Delete last character
search_query = search_query[:-1]
elif key == readchar.key.ENTER: # Exit search mode
cities = filtered_cities
search_mode = False
else:
search_query += key # Append new character
# Update filtered cities based on search query
filtered_cities = [city for city in all_cities if search_query.lower() in city.lower()]
filtered_cities.append("Exit")
# Call the function to display and select a city # Call the function to display and select a city