Skip to content

Commit a4f9456

Browse files
committed
Allow maps to be downloaded via dynmap tile coordinates
1 parent f8af0ba commit a4f9456

3 files changed

Lines changed: 72 additions & 3 deletions

File tree

controllers/download.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,10 @@ def download(self):
108108
from_tile_x, from_tile_y = DynmapCoords.mc_to_tile(map_obj, input_range['zoom'], from_x, 64, from_y)
109109
to_tile_x, to_tile_y = DynmapCoords.mc_to_tile(map_obj, input_range['zoom'], to_x, 64, to_y)
110110
elif user_input['coord_mode'] == 'dynmap':
111-
pass
111+
from_tile_x = input_range['from_x']
112+
from_tile_y = input_range['from_y']
113+
to_tile_x = input_range['to_x']
114+
to_tile_y = input_range['to_y']
112115
else:
113116
self.view.display_error('Invalid coordinate mode')
114117
return

core/container.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ class Controllers(containers.DeclarativeContainer):
107107
views.download_frame,
108108
download_mc_coords_controller,
109109
download_grid_ref_controller,
110-
download_grid_ref_controller
110+
download_dynmap_tile_controller
111111
)
112112

113113
grid_ref_conv_controller = providers.Singleton(

views/download.py

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,11 @@ def get_input(self) -> dict:
170170

171171
class DownloadDynmapTileFrame(View):
172172
controller: DownloadDynmapTileController
173+
from_x_txt: ttk.Entry
174+
from_y_txt: ttk.Entry
175+
to_x_txt: ttk.Entry
176+
to_y_txt: ttk.Entry
177+
zoom_txt: ttk.Entry
173178

174179
def __init__(self):
175180
super().__init__()
@@ -178,12 +183,73 @@ def __init__(self):
178183
def build_view(self, parent, controller: DownloadDynmapTileController):
179184
self.controller = controller
180185

186+
# Create the view if it's being shown for the first time
187+
if self.frame is None:
188+
self.frame = ttk.Frame(parent)
189+
190+
self.frame.columnconfigure(index=0, weight=1)
191+
self.frame.columnconfigure(index=1, weight=1)
192+
193+
from_lbl = ttk.Label(self.frame, text='From: ')
194+
from_lbl.grid(row=0, column=0, padx=7, pady=7, columnspan=2)
195+
196+
self.from_x_txt = ttk.Entry(self.frame)
197+
self.from_x_txt.grid(row=1, column=0, padx=7, pady=7, sticky='we')
198+
199+
self.from_y_txt = ttk.Entry(self.frame)
200+
self.from_y_txt.grid(row=1, column=1, padx=7, pady=7, sticky='we')
201+
202+
to_lbl = ttk.Label(self.frame, text='To: ')
203+
to_lbl.grid(row=2, column=0, padx=7, pady=7, columnspan=2)
204+
205+
self.to_x_txt = ttk.Entry(self.frame)
206+
self.to_x_txt.grid(row=3, column=0, padx=7, pady=7, sticky='we')
207+
208+
self.to_y_txt = ttk.Entry(self.frame)
209+
self.to_y_txt.grid(row=3, column=1, padx=7, pady=7, sticky='we')
210+
211+
zoom_lbl = ttk.Label(self.frame, text='Zoom:')
212+
zoom_lbl.grid(row=4, column=0, padx=7, pady=7)
213+
214+
self.zoom_txt = ttk.Entry(self.frame)
215+
self.zoom_txt.grid(row=4, column=1, padx=7, pady=7, sticky='we')
216+
self.zoom_txt.insert(0, '0')
217+
218+
self.frame.grid(row=2, column=0, columnspan=3, padx=0, pady=0, sticky='nsew')
219+
181220
def hide_view(self):
182221
if self.frame is not None:
183222
self.frame.grid_forget()
184223

185224
def get_input(self) -> dict:
186-
return {}
225+
coords_input = {}
226+
227+
try:
228+
coords_input['from_x'] = int(self.from_x_txt.get())
229+
except ValueError:
230+
raise ValueError('From X Coordinate must be an integer')
231+
232+
try:
233+
coords_input['from_y'] = int(self.from_y_txt.get())
234+
except ValueError:
235+
raise ValueError('From Y Coordinate must be an integer')
236+
237+
try:
238+
coords_input['to_x'] = int(self.to_x_txt.get())
239+
except ValueError:
240+
raise ValueError('To X Coordinate must be an integer')
241+
242+
try:
243+
coords_input['to_y'] = int(self.to_y_txt.get())
244+
except ValueError:
245+
raise ValueError('To Y Coordinate must be an integer')
246+
247+
try:
248+
coords_input['zoom'] = int(self.zoom_txt.get())
249+
except ValueError:
250+
raise ValueError('Zoom must be an integer')
251+
252+
return coords_input
187253

188254

189255
class DownloadFrame(View):

0 commit comments

Comments
 (0)