masadonline commited on
Commit
8f4ea34
·
verified ·
1 Parent(s): cfe4dff

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +44 -1
app.py CHANGED
@@ -49,4 +49,47 @@ if uploaded_file is not None:
49
 
50
  for fn in functions:
51
  elements.append(f"""
52
- <a-box
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
 
50
  for fn in functions:
51
  elements.append(f"""
52
+ <a-box position="{x_pos} 1 -3" color="#FFC65D" depth="0.5" height="0.5" width="2"></a-box>
53
+ <a-text value="Function: {fn}" position="{x_pos} 1.7 -3" align="center" color="black"></a-text>
54
+ """)
55
+ x_pos += 3
56
+
57
+ for cls in classes:
58
+ elements.append(f"""
59
+ <a-box position="{x_pos} 1 -3" color="#F16775" depth="0.5" height="0.5" width="2"></a-box>
60
+ <a-text value="Class: {cls}" position="{x_pos} 1.7 -3" align="center" color="black"></a-text>
61
+ """)
62
+ x_pos += 3
63
+
64
+ html = f"""
65
+ <!DOCTYPE html>
66
+ <html>
67
+ <head>
68
+ <script src="https://aframe.io/releases/1.3.0/aframe.min.js"></script>
69
+ <meta name="viewport" content="width=device-width, initial-scale=1">
70
+ </head>
71
+ <body>
72
+ <a-scene background="color: #ECECEC">
73
+ <a-entity position="0 1.6 3">
74
+ <a-camera wasd-controls-enabled="true" look-controls-enabled="true"></a-camera>
75
+ </a-entity>
76
+ <a-light type="ambient" color="#FFF"></a-light>
77
+ <a-plane rotation="-90 0 0" width="30" height="30" color="#7BC8A4"></a-plane>
78
+ {''.join(elements)}
79
+ </a-scene>
80
+ </body>
81
+ </html>
82
+ """
83
+ return html
84
+
85
+ # Generate and encode A-Frame scene as base64
86
+ aframe_html = generate_aframe_html(functions, classes)
87
+ encoded_html = base64.b64encode(aframe_html.encode()).decode()
88
+ data_url = f"data:text/html;base64,{encoded_html}"
89
+
90
+ st.subheader("🌐 AR/VR Visualization")
91
+ st.info("Below is an interactive 3D visualization of your code structure (functions & classes).")
92
+ components.iframe(data_url, height=500, scrolling=True)
93
+
94
+ else:
95
+ st.info("Please upload a Python file to get started.")