Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1from typing import Optional 

2 

3from gi.repository import GdkPixbuf, Gtk 

4 

5 

6class SpinnerImage(Gtk.Overlay): 

7 def __init__( 

8 self, 

9 loading: bool = True, 

10 image_name: str = None, 

11 spinner_name: str = None, 

12 image_size: int = None, 

13 **kwargs, 

14 ): 

15 """An image with a loading overlay.""" 

16 Gtk.Overlay.__init__(self) 

17 self.image_size = image_size 

18 self.filename: Optional[str] = None 

19 

20 self.image = Gtk.Image(name=image_name, **kwargs) 

21 self.add(self.image) 

22 

23 self.spinner = Gtk.Spinner( 

24 name=spinner_name, 

25 active=loading, 

26 halign=Gtk.Align.CENTER, 

27 valign=Gtk.Align.CENTER, 

28 ) 

29 self.add_overlay(self.spinner) 

30 

31 def set_from_file(self, filename: Optional[str]): 

32 """Set the image to the given filename.""" 

33 if filename == "": 

34 filename = None 

35 self.filename = filename 

36 if self.image_size is not None and filename: 

37 pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale( 

38 filename, self.image_size, self.image_size, True 

39 ) 

40 self.image.set_from_pixbuf(pixbuf) 

41 else: 

42 self.image.set_from_file(filename) 

43 

44 def set_loading(self, loading_status: bool): 

45 if loading_status: 

46 self.spinner.start() 

47 self.spinner.show() 

48 else: 

49 self.spinner.stop() 

50 self.spinner.hide() 

51 

52 def set_image_size(self, size: int): 

53 self.image_size = size 

54 self.set_from_file(self.filename)