|
""" |
|
🎨 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" |