Reputation: 419
I am looking for a way to change the file icon of FileChooserIconView and set it programatically. I am looking at Kivy's filechooser.py source code but cannot find where the icon is being set.
Currently, the default background color of FileChooserIconView is black and the current icon works well with that background. I need to change my app's background to white, and the current icon doesn't looks nice with white background and I also have a specific file icon that needs to be used for the white background.
Upvotes: 1
Views: 649
Reputation: 39052
The file icon is defined in the style.kv
file of your Kivy
installation. And it is referenced in the FileChooserIconView
and the FileChooserIconLayout
classes as:
_ENTRY_TEMPLATE = 'FileIconEntry'
You can redefine that template using something like:
Builder.load_string('''
[FileIconEntry@Widget]:
locked: False
path: ctx.path
selected: self.path in ctx.controller().selection
size_hint: None, None
on_touch_down: self.collide_point(*args[1].pos) and ctx.controller().entry_touched(self, args[1])
on_touch_up: self.collide_point(*args[1].pos) and ctx.controller().entry_released(self, args[1])
size: '100dp', '100dp'
canvas:
Color:
rgba: 1, 1, 1, 1 if self.selected else 0
BorderImage:
border: 8, 8, 8, 8
pos: root.pos
size: root.size
source: 'atlas://data/images/defaulttheme/filechooser_selected'
Image:
size: '48dp', '48dp'
source: 'atlas://data/images/defaulttheme/filechooser_%s' % ('folder' if ctx.isdir else 'file')
pos: root.x + dp(24), root.y + dp(40)
Label:
text: ctx.name
text_size: (root.width, self.height)
halign: 'center'
shorten: True
size: '100dp', '16dp'
pos: root.x, root.y + dp(16)
Label:
text: '{}'.format(ctx.get_nice_size())
font_size: '11sp'
color: .8, .8, .8, 1
size: '100dp', '16sp'
pos: root.pos
halign: 'center'
''')
The above code just duplicates the template definition from style.kv
, but you can make any changes to the above template, and those changes will affect the FileChooserIconView
. The Image
is the actual icon.
Upvotes: 1