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