]> git.jsancho.org Git - kivyforms.git/blobdiff - kivyforms/formcanvas.py
Improve exported Kv
[kivyforms.git] / kivyforms / formcanvas.py
index a1b7058ad0141df64878494e93896615c825c98c..3c6ab6003aba2f38bdf61d54c302260307e65721 100644 (file)
@@ -128,6 +128,8 @@ class FormCanvas(BoxLayout):
             height=self.widgets_height,
             size_hint=self.widgets_size_hint
         )
+        widget.height = self.widgets_height
+        widget.size_hint = self.widgets_size_hint
         g.add_widget(widget)
         self._canvas.add_widget(g)
 
@@ -201,18 +203,19 @@ class FormCanvas(BoxLayout):
             spacing=self._canvas.spacing[0]
         )
 
-    def export_to_kv(self, widget, indent=''):
+    def export_to_kv(self):
         kv = """StackLayout:
     orientation: '{orientation}'
     padding: {padding}
     spacing: {spacing}
-""".format(orientation=self.orientation, padding=self.padding, spacing=self.spacing)
+""".format(orientation=self._canvas.orientation, padding=self._canvas.padding, spacing=self._canvas.spacing)
 
         indent = '    '
-        stack = [self]
+        stack = [self._canvas]
 
         widgets = self.walk(restrict=True)
         next(widgets)    # the first widget is the FormCanvas
+        next(widgets)    # and the second is the inner StackLayout
         for widget in widgets:
             if not isinstance(widget, Grabbable):
                 # Look for the widget position inside the tree
@@ -228,9 +231,15 @@ class FormCanvas(BoxLayout):
                 stack.append(widget)
 
                 # Widget attributes
-                kv += """{indent}height: 40
-{indent}size_hint: (1., None)
-{indent}text: '{text}'
-""".format(indent=indent*len(stack), text=widget.text)
+                for attr in ('height', 'size_hint', 'text', 'spacing'):
+                    if hasattr(widget, attr):
+                        value = getattr(widget, attr)
+                        if type(value) is str:
+                            value = "'" + value + "'"
+                        kv += "{indent}{attr}: {value}\n".format(
+                            indent=indent*len(stack),
+                            attr=attr,
+                            value=value
+                        )
 
         return kv