Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono-addins.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'Samples/TextEditor/TextEditor.CompilerService/CompilerManager.cs')
-rw-r--r--Samples/TextEditor/TextEditor.CompilerService/CompilerManager.cs34
1 files changed, 34 insertions, 0 deletions
diff --git a/Samples/TextEditor/TextEditor.CompilerService/CompilerManager.cs b/Samples/TextEditor/TextEditor.CompilerService/CompilerManager.cs
new file mode 100644
index 0000000..e65ab65
--- /dev/null
+++ b/Samples/TextEditor/TextEditor.CompilerService/CompilerManager.cs
@@ -0,0 +1,34 @@
+
+using System;
+using Mono.Addins;
+
+namespace TextEditor.CompilerService
+{
+ public class CompilerManager
+ {
+ public static void Run (string file)
+ {
+ ICompiler[] compilers = (ICompiler[]) AddinManager.GetExtensionObjects (typeof(ICompiler));
+
+ ICompiler compiler = null;
+ foreach (ICompiler comp in compilers) {
+ if (comp.CanCompile (file)) {
+ compiler = comp;
+ break;
+ }
+ }
+ if (compiler == null) {
+ string msg = "No compiler available for this kind of file.";
+ Gtk.MessageDialog dlg = new Gtk.MessageDialog (TextEditorApp.MainWindow, Gtk.DialogFlags.Modal, Gtk.MessageType.Error, Gtk.ButtonsType.Close, msg);
+ dlg.Run ();
+ dlg.Destroy ();
+ return;
+ }
+
+ string messages = compiler.Compile (file, file + ".exe");
+
+ TextEditorApp.MainWindow.ConsoleWrite ("Compilation finished.\n");
+ TextEditorApp.MainWindow.ConsoleWrite (messages);
+ }
+ }
+}