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)
|
set_icon(self.window)
|
||||||
self.window.focus()
|
self.window.focus()
|
||||||
|
|
||||||
|
|
||||||
def icon_section(self, frame_label, path, no_results_label):
|
def icon_section(self, frame_label, path, no_results_label):
|
||||||
frame = LabelFrame(self.window, labelwidget=frame_label, padx=5, pady=5)
|
frame = LabelFrame(self.window, labelwidget=frame_label, padx=5, pady=5)
|
||||||
frame.pack(side=TOP, fill=X)
|
frame.pack(side=TOP, fill=X)
|
||||||
|
@ -1339,7 +1340,7 @@ class SpriteSelector(object):
|
||||||
|
|
||||||
sprites.sort(key=lambda s: str.lower(s.name or "").strip())
|
sprites.sort(key=lambda s: str.lower(s.name or "").strip())
|
||||||
|
|
||||||
i = 0
|
frame.buttons = []
|
||||||
for sprite in sprites:
|
for sprite in sprites:
|
||||||
image = get_image_for_sprite(sprite)
|
image = get_image_for_sprite(sprite)
|
||||||
if image is None:
|
if image is None:
|
||||||
|
@ -1348,18 +1349,29 @@ class SpriteSelector(object):
|
||||||
button = Button(frame, image=image, command=lambda spr=sprite: self.select_sprite(spr))
|
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 ""))
|
ToolTips.register(button, sprite.name + ("\nBy: %s" % sprite.author_name if sprite.author_name else ""))
|
||||||
button.image = image
|
button.image = image
|
||||||
button.grid(row=i // 32, column=i % 32)
|
frame.buttons.append(button)
|
||||||
i += 1
|
|
||||||
|
|
||||||
if i == 0:
|
if not frame.buttons:
|
||||||
label = Label(frame, text=no_results_label)
|
label = Label(frame, text=no_results_label)
|
||||||
label.pack()
|
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):
|
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.
|
# 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.window.destroy()
|
||||||
self.parent.update()
|
self.parent.update()
|
||||||
|
|
||||||
def work(task):
|
def work(task):
|
||||||
resultmessage = ""
|
resultmessage = ""
|
||||||
successful = True
|
successful = True
|
||||||
|
|
Loading…
Reference in New Issue