feat: add support for non-markdown files and improve drawings UI
- Added scanning and metadata tracking for non-markdown files (images, PDFs, videos, code files) - Redesigned drawings editor header with new toolbar layout and dropdown menus - Added file picker dropdown to easily open existing .excalidraw files - Implemented new file creation flow with auto-generated filenames - Added export options menu with PNG/SVG/JSON export variants - Updated proxy config to support vault file access - Adde
This commit is contained in:
Vendored
+15
-12
@@ -13,10 +13,10 @@
|
||||
"state": {
|
||||
"type": "excalidraw",
|
||||
"state": {
|
||||
"file": "Drawing-20251028-1452.excalidraw.md"
|
||||
"file": "dessin.excalidraw.md"
|
||||
},
|
||||
"icon": "excalidraw-icon",
|
||||
"title": "Drawing-20251028-1452.excalidraw"
|
||||
"title": "dessin.excalidraw"
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -178,11 +178,22 @@
|
||||
},
|
||||
"active": "8309e5042a8fb85c",
|
||||
"lastOpenFiles": [
|
||||
"Dessin-02.png",
|
||||
"mixe/Relaxing Music relax music music _hls-480_.mp4",
|
||||
"Dessin-02.excalidraw.md",
|
||||
"dessin.excalidraw.md",
|
||||
"Drawing-20251028-1452.excalidraw.md",
|
||||
"Dessin-02.excalidraw.md.tmp",
|
||||
"Dessin-02.excalidraw.md.bak",
|
||||
"mixe/ThinkBook_16_G7_ARP_Spec.pdf",
|
||||
"mixe/Claude_ObsiViewer_V1.png",
|
||||
"mixe/image_no_bg_clean.svg",
|
||||
"mixe/dessin.json",
|
||||
"mixe",
|
||||
"New folder",
|
||||
"Drawing-20251028-1452.png",
|
||||
"Drawing-20251028-1452.excalidraw.md.bak",
|
||||
"Drawing-20251028-1452.excalidraw.md",
|
||||
"dessin.svg",
|
||||
"dessin.excalidraw.md",
|
||||
"dessin.png",
|
||||
"dessin.excalidraw.md.bak",
|
||||
"dessin_05.svg",
|
||||
@@ -190,16 +201,9 @@
|
||||
"dessin_05.excalidraw.md",
|
||||
"dessin_03.excalidraw.md",
|
||||
"dessin_05.excalidraw.md.bak",
|
||||
"dessin_04.excalidraw.md.tmp",
|
||||
"dessin_04.excalidraw.md.bak",
|
||||
"dessin_04.excalidraw.md",
|
||||
"dessin-002.excalidraw.md",
|
||||
"dessin_03.excalidraw.md.tmp",
|
||||
"dessin_03.excalidraw.md.bak",
|
||||
"dessin-002.excalidraw.md.tmp",
|
||||
"dessin-002.excalidraw.md.bak",
|
||||
"Dessin_001.excalidraw.md",
|
||||
"Dessin_001.excalidraw.md.tmp",
|
||||
"Drawing 2025-10-28 11.11.59.excalidraw.md",
|
||||
"dessin-06.excalidraw.md",
|
||||
"Dessin-5.excalidraw.md",
|
||||
@@ -217,7 +221,6 @@
|
||||
"HOME.md",
|
||||
"Drawing-20251027-1914.excalidraw.md",
|
||||
"Drawing-20251027-1705.excalidraw.md",
|
||||
"Drawing 2025-10-27 16.43.48.excalidraw.md",
|
||||
"Untitled.canvas"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
---
|
||||
excalidraw-plugin: parsed
|
||||
updated: "2025-10-30T01:40:26.435Z"
|
||||
---
|
||||
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠==
|
||||
|
||||
# Excalidraw Data
|
||||
|
||||
## Text Elements
|
||||
%%
|
||||
## Drawing
|
||||
```compressed-json
|
||||
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=
|
||||
```
|
||||
%%
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 4.8 KiB |
@@ -1,15 +0,0 @@
|
||||
---
|
||||
excalidraw-plugin: parsed
|
||||
updated: "2025-10-29T00:30:06.609Z"
|
||||
---
|
||||
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠==
|
||||
|
||||
# Excalidraw Data
|
||||
|
||||
## Text Elements
|
||||
%%
|
||||
## Drawing
|
||||
```compressed-json
|
||||
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
|
||||
```
|
||||
%%
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
excalidraw-plugin: parsed
|
||||
updated: "2025-10-28T18:48:43.751Z"
|
||||
updated: "2025-10-30T11:48:55.327Z"
|
||||
---
|
||||
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠==
|
||||
|
||||
@@ -10,6 +10,6 @@ updated: "2025-10-28T18:48:43.751Z"
|
||||
%%
|
||||
## Drawing
|
||||
```compressed-json
|
||||
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
|
||||
```
|
||||
%%
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 2.8 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 946 KiB |
@@ -0,0 +1,72 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Exemple de script PowerShell de démonstration.
|
||||
|
||||
.DESCRIPTION
|
||||
Ce script montre comment :
|
||||
- Définir des variables
|
||||
- Lire des entrées utilisateur
|
||||
- Utiliser des conditions et des boucles
|
||||
- Écrire dans un fichier de log
|
||||
- Gérer des erreurs
|
||||
|
||||
.AUTHOR
|
||||
Bruno Charest
|
||||
#>
|
||||
|
||||
# =======================
|
||||
# ⚙️ Variables de base
|
||||
# =======================
|
||||
$UserName = $env:USERNAME
|
||||
$DateNow = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
|
||||
$LogFile = "C:\Logs\ExampleScript.log"
|
||||
|
||||
# Crée le répertoire de logs si nécessaire
|
||||
if (!(Test-Path (Split-Path $LogFile))) {
|
||||
New-Item -Path (Split-Path $LogFile) -ItemType Directory -Force | Out-Null
|
||||
}
|
||||
|
||||
# =======================
|
||||
# 📝 Fonction pour journaliser les événements
|
||||
# =======================
|
||||
function Write-Log {
|
||||
param (
|
||||
[string]$Message,
|
||||
[string]$Level = "INFO"
|
||||
)
|
||||
$LogEntry = "$((Get-Date).ToString('yyyy-MM-dd HH:mm:ss')) [$Level] $Message"
|
||||
Add-Content -Path $LogFile -Value $LogEntry
|
||||
Write-Host $LogEntry
|
||||
}
|
||||
|
||||
Write-Log "Script démarré par $UserName"
|
||||
|
||||
# =======================
|
||||
# 👋 Interaction utilisateur
|
||||
# =======================
|
||||
$name = Read-Host "Quel est ton prénom"
|
||||
Write-Log "Nom entré : $name"
|
||||
|
||||
# =======================
|
||||
# 🔁 Exemple de boucle
|
||||
# =======================
|
||||
for ($i = 1; $i -le 5; $i++) {
|
||||
Write-Host "Itération $i"
|
||||
Start-Sleep -Milliseconds 500
|
||||
}
|
||||
|
||||
# =======================
|
||||
# ⚠️ Exemple de gestion d'erreur
|
||||
# =======================
|
||||
try {
|
||||
# Exemple : tentative de suppression d’un fichier inexistant
|
||||
Remove-Item "C:\FichierInexistant.txt" -ErrorAction Stop
|
||||
} catch {
|
||||
Write-Log "Erreur détectée : $($_.Exception.Message)" "ERROR"
|
||||
}
|
||||
|
||||
# =======================
|
||||
# ✅ Fin du script
|
||||
# =======================
|
||||
Write-Log "Script terminé avec succès."
|
||||
Write-Host "`n✅ Exécution terminée avec succès."
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,217 @@
|
||||
{
|
||||
"elements": [
|
||||
{
|
||||
"type": "ellipse",
|
||||
"version": 132,
|
||||
"versionNonce": 283426111,
|
||||
"isDeleted": false,
|
||||
"id": "75xXCsrYeEIpx-bVFdD26",
|
||||
"fillStyle": "solid",
|
||||
"strokeWidth": 2,
|
||||
"strokeStyle": "solid",
|
||||
"roughness": 1,
|
||||
"opacity": 100,
|
||||
"angle": 0,
|
||||
"x": 152,
|
||||
"y": 143.5,
|
||||
"strokeColor": "#1e1e1e",
|
||||
"backgroundColor": "transparent",
|
||||
"width": 245.50000000000003,
|
||||
"height": 174.49999999999997,
|
||||
"seed": 1925880401,
|
||||
"groupIds": [],
|
||||
"frameId": null,
|
||||
"roundness": {
|
||||
"type": 2
|
||||
},
|
||||
"boundElements": [],
|
||||
"updated": 1761676663352,
|
||||
"link": null,
|
||||
"locked": false
|
||||
},
|
||||
{
|
||||
"type": "line",
|
||||
"version": 281,
|
||||
"versionNonce": 1637513215,
|
||||
"isDeleted": false,
|
||||
"id": "Ee7Y120RtAdQsiCUEU0r7",
|
||||
"fillStyle": "solid",
|
||||
"strokeWidth": 2,
|
||||
"strokeStyle": "solid",
|
||||
"roughness": 1,
|
||||
"opacity": 100,
|
||||
"angle": 0,
|
||||
"x": 209.5,
|
||||
"y": 158.5,
|
||||
"strokeColor": "#1e1e1e",
|
||||
"backgroundColor": "transparent",
|
||||
"width": 5.5,
|
||||
"height": 147.5,
|
||||
"seed": 1375870513,
|
||||
"groupIds": [],
|
||||
"frameId": null,
|
||||
"roundness": {
|
||||
"type": 2
|
||||
},
|
||||
"boundElements": [],
|
||||
"updated": 1761676682202,
|
||||
"link": null,
|
||||
"locked": false,
|
||||
"startBinding": null,
|
||||
"endBinding": null,
|
||||
"lastCommittedPoint": null,
|
||||
"startArrowhead": null,
|
||||
"endArrowhead": null,
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
5.5,
|
||||
147.5
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "line",
|
||||
"version": 200,
|
||||
"versionNonce": 1266585960,
|
||||
"isDeleted": false,
|
||||
"id": "TwSQiyuxGNT_cWR9zLRTk",
|
||||
"fillStyle": "solid",
|
||||
"strokeWidth": 2,
|
||||
"strokeStyle": "solid",
|
||||
"roughness": 1,
|
||||
"opacity": 100,
|
||||
"angle": 0,
|
||||
"x": 213.57179654033308,
|
||||
"y": 230.71709399425663,
|
||||
"strokeColor": "#1e1e1e",
|
||||
"backgroundColor": "transparent",
|
||||
"width": 187,
|
||||
"height": 3.5,
|
||||
"seed": 1447624159,
|
||||
"groupIds": [],
|
||||
"frameId": null,
|
||||
"roundness": {
|
||||
"type": 2
|
||||
},
|
||||
"boundElements": [],
|
||||
"updated": 1761677094707,
|
||||
"link": null,
|
||||
"locked": false,
|
||||
"startBinding": null,
|
||||
"endBinding": null,
|
||||
"lastCommittedPoint": null,
|
||||
"startArrowhead": null,
|
||||
"endArrowhead": null,
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
187,
|
||||
-3.5
|
||||
]
|
||||
]
|
||||
}
|
||||
],
|
||||
"appState": {
|
||||
"showWelcomeScreen": true,
|
||||
"theme": "dark",
|
||||
"currentChartType": "bar",
|
||||
"currentItemBackgroundColor": "transparent",
|
||||
"currentItemEndArrowhead": "arrow",
|
||||
"currentItemFillStyle": "solid",
|
||||
"currentItemFontFamily": 1,
|
||||
"currentItemFontSize": 20,
|
||||
"currentItemOpacity": 100,
|
||||
"currentItemRoughness": 1,
|
||||
"currentItemStartArrowhead": null,
|
||||
"currentItemStrokeColor": "#1e1e1e",
|
||||
"currentItemRoundness": "round",
|
||||
"currentItemStrokeStyle": "solid",
|
||||
"currentItemStrokeWidth": 2,
|
||||
"currentItemTextAlign": "left",
|
||||
"cursorButton": "up",
|
||||
"activeEmbeddable": null,
|
||||
"draggingElement": null,
|
||||
"editingElement": null,
|
||||
"editingGroupId": null,
|
||||
"editingLinearElement": null,
|
||||
"activeTool": {
|
||||
"type": "hand",
|
||||
"customType": null,
|
||||
"locked": false,
|
||||
"lastActiveTool": null
|
||||
},
|
||||
"penMode": false,
|
||||
"penDetected": false,
|
||||
"errorMessage": null,
|
||||
"exportBackground": true,
|
||||
"exportScale": 2,
|
||||
"exportEmbedScene": false,
|
||||
"exportWithDarkMode": false,
|
||||
"fileHandle": null,
|
||||
"gridSize": null,
|
||||
"isBindingEnabled": true,
|
||||
"defaultSidebarDockedPreference": false,
|
||||
"isLoading": false,
|
||||
"isResizing": false,
|
||||
"isRotating": false,
|
||||
"lastPointerDownWith": "touch",
|
||||
"multiElement": null,
|
||||
"name": "Untitled-2025-10-28-1436",
|
||||
"contextMenu": null,
|
||||
"openMenu": null,
|
||||
"openPopup": null,
|
||||
"openSidebar": null,
|
||||
"openDialog": null,
|
||||
"pasteDialog": {
|
||||
"shown": false,
|
||||
"data": null
|
||||
},
|
||||
"previousSelectedElementIds": {},
|
||||
"resizingElement": null,
|
||||
"scrolledOutside": false,
|
||||
"scrollX": 141.7025899014401,
|
||||
"scrollY": 113.16506876319784,
|
||||
"selectedElementIds": {},
|
||||
"selectedGroupIds": {},
|
||||
"selectedElementsAreBeingDragged": false,
|
||||
"selectionElement": null,
|
||||
"shouldCacheIgnoreZoom": false,
|
||||
"showStats": false,
|
||||
"startBoundElement": null,
|
||||
"suggestedBindings": [],
|
||||
"frameRendering": {
|
||||
"enabled": true,
|
||||
"clip": true,
|
||||
"name": true,
|
||||
"outline": true
|
||||
},
|
||||
"frameToHighlight": null,
|
||||
"editingFrame": null,
|
||||
"elementsToHighlight": null,
|
||||
"toast": null,
|
||||
"viewBackgroundColor": "#f8f9fa",
|
||||
"zenModeEnabled": false,
|
||||
"zoom": {
|
||||
"value": 0.7938006350863728
|
||||
},
|
||||
"viewModeEnabled": false,
|
||||
"pendingImageElementId": null,
|
||||
"showHyperlinkPopup": false,
|
||||
"selectedLinearElement": null,
|
||||
"snapLines": [],
|
||||
"originSnapOffset": null,
|
||||
"objectsSnapModeEnabled": false,
|
||||
"offsetLeft": 723,
|
||||
"offsetTop": 228,
|
||||
"width": 665,
|
||||
"height": 546
|
||||
},
|
||||
"files": {}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 825 KiB |
@@ -0,0 +1,61 @@
|
||||
"""Exemple de script Python illustrant l'usage des dataclasses."""
|
||||
|
||||
from dataclasses import dataclass, field
|
||||
from datetime import datetime, timedelta
|
||||
from typing import Iterable
|
||||
|
||||
|
||||
@dataclass
|
||||
class Task:
|
||||
"""Représente une tâche planifiée avec une durée estimée."""
|
||||
|
||||
name: str
|
||||
estimated_minutes: int
|
||||
created_at: datetime = field(default_factory=datetime.now)
|
||||
completed: bool = False
|
||||
|
||||
def remaining_minutes(self) -> int:
|
||||
"""Calcule le temps restant estimé."""
|
||||
return 0 if self.completed else self.estimated_minutes
|
||||
|
||||
def mark_done(self) -> None:
|
||||
"""Marque la tâche comme terminée."""
|
||||
self.completed = True
|
||||
|
||||
|
||||
def summarize(tasks: Iterable[Task]) -> str:
|
||||
"""Retourne un résumé textuel de la charge de travail."""
|
||||
task_list = list(tasks)
|
||||
total = sum(task.estimated_minutes for task in task_list)
|
||||
remaining = sum(task.remaining_minutes() for task in task_list)
|
||||
done = total - remaining
|
||||
return (
|
||||
f"Tâches: {len(task_list)}\n"
|
||||
f"Terminé: {done} min\n"
|
||||
f"Restant: {remaining} min\n"
|
||||
f"Charge totale: {total} min"
|
||||
)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
"""Point d'entrée du script avec quelques exemples."""
|
||||
tasks = [
|
||||
Task("Préparer la réunion", estimated_minutes=45),
|
||||
Task("Répondre aux emails", estimated_minutes=20),
|
||||
Task("Prototyper l'interface", estimated_minutes=90),
|
||||
]
|
||||
|
||||
# Marquer une tâche comme terminée pour illustrer la logique.
|
||||
tasks[1].mark_done()
|
||||
|
||||
print("Résumé du jour:")
|
||||
print(summarize(tasks))
|
||||
|
||||
# Afficher l'échéance approximative si toutes les tâches sont démarrées maintenant.
|
||||
deadline = datetime.now() + timedelta(minutes=sum(task.remaining_minutes() for task in tasks))
|
||||
print(f"Heure de fin estimée: {deadline:%H:%M}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user