Sto sviluppando, in C++, un pacchetto di progettazione assistita da computer per circuiti stampati e schemi (alias EDA CAD). Usa Lua per alcune cose specifiche, ma mi piacerebbe espandere il ruolo di Lua in modo tale da implementare gran parte della logica dell'interfaccia utente.Come si progetta la struttura di un pacchetto CAD?
Vorrei ricostruire gli interni in un modo che consenta alle persone di cambiare facilmente il comportamento dell'interfaccia utente modificando la Lua e aggiungendo nuove funzionalità.
Il problema è, a meno di esporre una specie di API massiccia al codice Lua, non riesco a pensare a un buon modo per farlo. Sospetto che un'enorme API, con una funzione che richiama tutto ciò a cui riesco a pensare, sia probabilmente un cattivo progetto. Come posso progettare un sistema che consenta agli utenti di implementare cose a cui non avevo nemmeno pensato?
C'è un buon documento o libro che posso leggere, o un forum in cui la gente parla di questo genere di cose. Ho cercato e pensato per molti mesi e non sono ancora sicuro di quale sia la risposta.
BTW, il progetto si chiama LiquidPCB.
Molte grazie
Hugo
La mia domanda è molto meno su Lua e molto altro sulla * struttura dell'applicazione *. Potrei usare Lua, o Python o C++. La domanda è davvero: "Come dovrebbe essere l'interfaccia tra l'applicazione e i plugin?" – Rocketmagnet