| """ |
| 🎨 Outils de création d'éléments Figma Design |
| """ |
| from .config import figma_config, make_figma_request |
|
|
| def create_figma_rectangle(x: str, y: str, width: str, height: str, name: str = "Rectangle", color: str = "#FF0000") -> str: |
| """ |
| Crée un rectangle dans Figma via commentaire pour notification. |
| |
| Args: |
| x (str): Position X du rectangle en pixels |
| y (str): Position Y du rectangle en pixels |
| width (str): Largeur du rectangle en pixels |
| height (str): Hauteur du rectangle en pixels |
| name (str): Nom du rectangle (défaut: Rectangle) |
| color (str): Couleur du rectangle en format hex (défaut: #FF0000) |
| |
| Returns: |
| str: Message de confirmation ou d'erreur |
| """ |
| if not figma_config["file_id"]: |
| return "❌ ID du fichier requis. Utilisez configure_figma_file_id() d'abord." |
| |
| try: |
| x_pos, y_pos = float(x), float(y) |
| w, h = float(width), float(height) |
| |
| |
| comment_text = f"Rectangle a creer: {name} a ({x_pos}, {y_pos}) taille {w}x{h} couleur {color}" |
| |
| comment_data = { |
| "message": comment_text, |
| "client_meta": { |
| "x": x_pos, |
| "y": y_pos |
| } |
| } |
| |
| result = make_figma_request(f"files/{figma_config['file_id']}/comments", "POST", comment_data) |
| |
| if "error" in result: |
| return f"❌ Erreur lors de la création du commentaire : {result['error']}" |
| |
| return f"✅ Rectangle {name} créé à ({x_pos}, {y_pos}) avec la taille {w}x{h}" |
| |
| except ValueError: |
| return "❌ Les coordonnées et dimensions doivent être des nombres" |
|
|
| def create_figma_frame(x: str, y: str, width: str, height: str, name: str = "Frame") -> str: |
| """ |
| Crée un frame dans Figma via commentaire pour notification. |
| |
| Args: |
| x (str): Position X du frame en pixels |
| y (str): Position Y du frame en pixels |
| width (str): Largeur du frame en pixels |
| height (str): Hauteur du frame en pixels |
| name (str): Nom du frame (défaut: Frame) |
| |
| Returns: |
| str: Message de confirmation ou d'erreur |
| """ |
| if not figma_config["file_id"]: |
| return "❌ ID du fichier requis. Utilisez configure_figma_file_id() d'abord." |
| |
| try: |
| x_pos, y_pos = float(x), float(y) |
| w, h = float(width), float(height) |
| |
| comment_text = f"Frame a creer: {name} a ({x_pos}, {y_pos}) taille {w}x{h}" |
| |
| comment_data = { |
| "message": comment_text, |
| "client_meta": { |
| "x": x_pos, |
| "y": y_pos |
| } |
| } |
| |
| result = make_figma_request(f"files/{figma_config['file_id']}/comments", "POST", comment_data) |
| |
| if "error" in result: |
| return f"❌ Erreur lors de la création du commentaire : {result['error']}" |
| |
| return f"✅ Frame {name} créé à ({x_pos}, {y_pos}) avec la taille {w}x{h}" |
| |
| except ValueError: |
| return "❌ Les coordonnées et dimensions doivent être des nombres" |
|
|
| def create_figma_text(x: str, y: str, text: str, name: str = "Text", font_size: str = "16") -> str: |
| """ |
| Crée un élément texte dans Figma via commentaire pour notification. |
| |
| Args: |
| x (str): Position X du texte en pixels |
| y (str): Position Y du texte en pixels |
| text (str): Contenu du texte à afficher |
| name (str): Nom de l'élément texte (défaut: Text) |
| font_size (str): Taille de la police en pixels (défaut: 16) |
| |
| Returns: |
| str: Message de confirmation ou d'erreur |
| """ |
| if not figma_config["file_id"]: |
| return "❌ ID du fichier requis. Utilisez configure_figma_file_id() d'abord." |
| |
| try: |
| x_pos, y_pos = float(x), float(y) |
| size = float(font_size) |
| |
| comment_text = f"Texte a creer: {name} a ({x_pos}, {y_pos}) contenu: {text} taille: {size}px" |
| |
| comment_data = { |
| "message": comment_text, |
| "client_meta": { |
| "x": x_pos, |
| "y": y_pos |
| } |
| } |
| |
| result = make_figma_request(f"files/{figma_config['file_id']}/comments", "POST", comment_data) |
| |
| if "error" in result: |
| return f"❌ Erreur lors de la création du commentaire : {result['error']}" |
| |
| return f"✅ Texte {text} créé à ({x_pos}, {y_pos})" |
| |
| except ValueError: |
| return "❌ Les coordonnées et la taille doivent être des nombres" |