Coverage for lib/lottie/gui/tree_view.py: 0%
64 statements
« prev ^ index » next coverage.py v7.2.2, created at 2023-03-20 16:17 +0100
« prev ^ index » next coverage.py v7.2.2, created at 2023-03-20 16:17 +0100
1from PyQt5 import QtWidgets
2from PyQt5.QtGui import *
3from PyQt5.QtCore import Qt
5from .. import objects
8def lottie_theme_icon(lottie_object):
9 if isinstance(lottie_object, objects.Animation):
10 return "tool-animator"
12 if isinstance(lottie_object, objects.Precomp):
13 return "folder"
15 if isinstance(lottie_object, objects.ShapeLayer):
16 return "shapes"
17 if isinstance(lottie_object, objects.TextLayer):
18 return "draw-text"
19 if isinstance(lottie_object, objects.PreCompLayer):
20 return "emblem-symbolic-link"
22 if isinstance(lottie_object, (objects.Rect, objects.SolidColorLayer)):
23 return "draw-rectangle"
24 if isinstance(lottie_object, objects.Ellipse):
25 return "draw-ellipse"
26 if isinstance(lottie_object, objects.Star):
27 return "draw-star"
28 if isinstance(lottie_object, objects.Path):
29 return "draw-bezier-curves"
30 if isinstance(lottie_object, (objects.Fill, objects.GradientFill)):
31 return "format-fill-color"
32 if isinstance(lottie_object, (objects.Stroke, objects.GradientStroke)):
33 return "format-stroke-color"
34 if isinstance(lottie_object, objects.Transform):
35 return "transform-scale"
36 if isinstance(lottie_object, objects.Group):
37 return "object-group"
39 return None
42def lottie_to_tree(tree_parent, lottie_object):
43 prop_to_tree(tree_parent, None, lottie_object)
46def lottie_object_to_tree(item, lottie_object, propname, textcol):
47 if propname == "color" and isinstance(lottie_object, objects.MultiDimensional) and not lottie_object.animated:
48 item.setBackground(textcol, QBrush(QColor.fromRgbF(*lottie_object.value)))
49 else:
50 text = str(lottie_object)
51 if text != propname or textcol == 0:
52 item.setText(textcol, text)
54 icon = lottie_theme_icon(lottie_object)
55 if icon:
56 item.setIcon(0, QIcon.fromTheme(icon))
58 for prop in lottie_object._props:
59 propitem = prop_to_tree(item, prop.name, prop.get(lottie_object))
60 propitem.setToolTip(0, prop.lottie)
63def prop_to_tree(tree_parent, propname, propval):
64 item = QtWidgets.QTreeWidgetItem(tree_parent)
66 first_column = 0
67 if propname:
68 item.setText(0, propname)
69 first_column = 1
71 if isinstance(propval, objects.LottieObject):
72 lottie_object_to_tree(item, propval, propname, first_column)
73 elif isinstance(propval, list):
74 for subval in propval:
75 prop_to_tree(item, type(subval).__name__, subval)
76 elif propval is None:
77 item.setText(first_column, "")
78 elif isinstance(propval, bool):
79 item.setCheckState(first_column, Qt.CheckState.Checked if propval else Qt.CheckState.Unchecked)
80 item.setFlags(Qt.ItemFlag.ItemIsSelectable | Qt.ItemFlag.ItemIsEnabled)
81 else:
82 item.setText(first_column, str(propval))
84 return item