2011-12-20 9 views
15

Sto lavorando a un progetto che include l'implementazione di un'interfaccia di scripting per l'applicazione Windows WPF (.Net4). Sono curioso di sapere se qualcuno può suggerire un editor preferito, AvalonEdit vs ScintillaNET. Qualsiasi insidia e vantaggio di uno sull'altro. Dobbiamo supportare sia C# che IronPython come linguaggi di scripting. (Almeno questo è il piano iniziale. Potremmo finalizzare su uno di questi però).ScintillaNET vs AvalonEdit per fornire un'interfaccia di scripting per un'applicazione WPF

Uno degli aspetti negativi di ScintillaNET è che si tratta solo di un wrapper gestito attorno alla Scintilla nativa (non gestita). Questo causerà problemi quando usato con WPF4.

Qualsiasi suggerimento e suggerimento è apprezzato.

+2

Bhuvan, su cosa ti sei stabilito? (ora, quasi 2 anni dopo) – Goswin

+0

Non ho usato né come componente nel mio codice sorgente, ma ho usato due prodotti basati su ciascuno ('QuickSharp' basato su' ScintillaNET' e 'SharpDevelop' basato su' AvalonEdit') come un editor C# alternativo leggero. Imo, 'SharpDevelop' era più funzionale e molto più facile da lavorare. – nawfal

risposta

22

Penso che questo dipenda dal numero di funzionalità che si desidera implementare nell'editor. Inoltre, quanto lavoro sei disposto a estendere e quanto di una curva di apprendimento sei disposto a gestire.

Se si sta puntando su Win32 e non ti dispiace la dll non gestita, penso che Scintilla.NET non sarà un problema. Inoltre puoi facilmente ospitarla in WPF come suggerisce la pagina this.

Personalmente ho sentito che Scintilla si comporta meglio di AvalonEdit. Inoltre, è più facile iniziare con un editor di base e fornisce molto da subito, ad esempio Scintilla fornisce il codice che si piega fuori dalla scatola.

Con AvalonEdit devi creare una strategia di piegatura e analizzare il documento da solo, questo è quello che dovevo fare per supportare IronPython per AvalonEdit che non ho ancora implementato.

Tutto quello che dovevo sostenere un editor IronPython nella scintilla è stata la SciLexer.dll nel percorso di ricerca e l'assemblea Scintilla.net e la seguente configurazione:

private void Form1_Load(object sender, EventArgs e) 
    { 
     this.scintilla1 = new ScintillaNet.Scintilla(); 
     this.scintilla1.ConfigurationManager.Language = "python"; 
     this.scintilla1.Indentation.ShowGuides = true; 
     this.scintilla1.Indentation.SmartIndentType = ScintillaNet.SmartIndent.Simple; 
     this.scintilla1.Location = new System.Drawing.Point(0, 0); 
     this.scintilla1.Margins.Margin0.Width = 40; 
     this.scintilla1.Margins.Margin2.Width = 20; 
     this.scintilla1.Name = "scintilla1"; 
     this.scintilla1.TabIndex = 4; 
     this.scintilla1.Whitespace.Mode = ScintillaNet.WhitespaceMode.VisibleAfterIndent; 
     this.scintilla1.Dock = DockStyle.Fill; 
     this.Controls.Add(this.scintilla1); 
    } 

Per AvalonEdit si deve caricare un evidenziatore esterna file, è possibile visualizzare il post del blog this per ulteriori informazioni. Quindi se vuoi le basi (evidenziare, piegare per python + C#) la mia conclusione è schintilla è più semplice e performante. Anche se con AvalonEdit potresti essere in grado di fare di più, se sei disposto a impegnarti e gestire la curva di apprendimento. Al momento sto utilizzando Scintilla come mio editor stabile e sto sperimentando Avalon come prova di concetto. Forse formerò anche nuove opinioni mentre imparo di più sull'editor.

Buona fortuna

+0

Grazie Andre. Questo è molto utile – Bhuvan

+6

@Andre, risponderebbe lo stesso oggi (quasi 2 anni dopo)? – Goswin

+0

Sì, mi piacerebbe anche una risposta alla domanda di @ Goswin. – gideon