Gui: Make spritelist "responsive"
This commit is contained in:
parent
ab54921665
commit
445852d3fa
20
Gui.py
20
Gui.py
|
@ -1328,6 +1328,7 @@ class SpriteSelector(object):
|
|||
set_icon(self.window)
|
||||
self.window.focus()
|
||||
|
||||
|
||||
def icon_section(self, frame_label, path, no_results_label):
|
||||
frame = LabelFrame(self.window, labelwidget=frame_label, padx=5, pady=5)
|
||||
frame.pack(side=TOP, fill=X)
|
||||
|
@ -1339,7 +1340,7 @@ class SpriteSelector(object):
|
|||
|
||||
sprites.sort(key=lambda s: str.lower(s.name or "").strip())
|
||||
|
||||
i = 0
|
||||
frame.buttons = []
|
||||
for sprite in sprites:
|
||||
image = get_image_for_sprite(sprite)
|
||||
if image is None:
|
||||
|
@ -1348,18 +1349,29 @@ class SpriteSelector(object):
|
|||
button = Button(frame, image=image, command=lambda spr=sprite: self.select_sprite(spr))
|
||||
ToolTips.register(button, sprite.name + ("\nBy: %s" % sprite.author_name if sprite.author_name else ""))
|
||||
button.image = image
|
||||
button.grid(row=i // 32, column=i % 32)
|
||||
i += 1
|
||||
frame.buttons.append(button)
|
||||
|
||||
if i == 0:
|
||||
if not frame.buttons:
|
||||
label = Label(frame, text=no_results_label)
|
||||
label.pack()
|
||||
|
||||
def update_sprites(event):
|
||||
sprites_per_row = (event.width - 10) // 38
|
||||
self.grid_fill_sprites(frame, sprites_per_row)
|
||||
|
||||
self.grid_fill_sprites(frame, 32)
|
||||
|
||||
frame.bind("<Configure>", update_sprites)
|
||||
|
||||
def grid_fill_sprites(self, frame, sprites_per_row):
|
||||
for i, button in enumerate(frame.buttons):
|
||||
button.grid(row=i // sprites_per_row, column=i % sprites_per_row)
|
||||
|
||||
def update_official_sprites(self):
|
||||
# need to wrap in try catch. We don't want errors getting the json or downloading the files to break us.
|
||||
self.window.destroy()
|
||||
self.parent.update()
|
||||
|
||||
def work(task):
|
||||
resultmessage = ""
|
||||
successful = True
|
||||
|
|
Loading…
Reference in New Issue