/// <summary> /// Crée une nouvelle instance de la fenêtre d'IDE. /// </summary> public ClankIDE() { InitializeComponent(); // Création des events. m_pageInfos = new List <PageInfo>(); m_new.Click += (object sender, EventArgs e) => { CreateNewPage("new (" + m_pageInfos.Count + ")", false); }; m_closeTab.Click += (object sender, EventArgs e) => { CloseCurrentPage(); }; m_open.Click += OpenPage; m_generate.Click += (object sender, EventArgs e) => { GenerateCurrent(); }; m_save.Click += (object sender, EventArgs e) => { SaveCurrent(); }; m_projectTree.NodeMouseDoubleClick += OnProjectNodeDoubleClick; // Setup des logs m_errors = new List <Core.Tools.EventLog.Entry>(); m_handlerFunction = new Core.Tools.EventLog.EventLogHandler(AddEntry); InitErrorList(); // Simule l'ouverture d'un projet. m_project = new ProjectNode(); m_project.MainFile = null; m_project.Settings.ServerTarget = new Core.Generation.GenerationTarget("CS", "server.cs"); m_project.Settings.ClientTargets = new List <Core.Generation.GenerationTarget>() { new Core.Generation.GenerationTarget("CS", "client.cs") }; SetStatusMessage("Prêt."); m_projectTree.SetProject(m_project); // Démarre le timer de compilation m_generationTimer = new Timer() { Interval = 1000 }; m_generationTimer.Tick += OnCompileTimer; // Charge la config m_configuration = Configuration.Load("config.xml"); SetupRecentProjectsList(); }
static void Main(string[] args) { // Get the arguments GenerationTarget serverTarget = null; List <GenerationTarget> clientTargets = new List <GenerationTarget>(); string srcFile = null; foreach (string arg in args) { if (arg.Contains("-server=")) { string servTargetStr = arg.Split('=')[1]; string[] parts = servTargetStr.Split(':'); string tag = parts[0]; string outputFile = parts[1]; serverTarget = new GenerationTarget(tag, outputFile); } else if (arg.Contains("-clients=")) { string[] clientTargetStrs = arg.Split('=')[1].Split('|'); foreach (string clientTargetStr in clientTargetStrs) { string[] parts = clientTargetStr.Split(':'); string tag = parts[0]; string outputFile = parts[1]; clientTargets.Add(new GenerationTarget(tag, outputFile)); } } else if (arg.Contains("-src=")) { srcFile = arg.Split('=')[1]; } else { PrintUsage(); throw new ArgumentException("Argument '" + arg + "' invalide."); } } // Arguments vides. if (serverTarget == null || clientTargets.Count == 0 || srcFile == null) { PrintUsage(); throw new ArgumentException("Nombre d'arguments invalide."); } // Fichier inexistant. if (!System.IO.File.Exists(srcFile)) { throw new System.IO.FileNotFoundException("Le fichier " + srcFile + " est introuvable."); } // Génère le projet et redirige la sortie vers la console. ProjectGenerator generator = new ProjectGenerator(); int errorCount = 0; int warningCount = 0; Clank.Core.Tools.EventLog.EventLogHandler handler = new Core.Tools.EventLog.EventLogHandler((Core.Tools.EventLog.Entry e) => { Console.WriteLine(e.Type.ToString() + " (" + e.Source + "). Line " + e.Line + "-" + e.Character + ": " + e.Message + "\r\n\r\n"); if (e.Type == Core.Tools.EventLog.EntryType.Error) { errorCount++; } else if (e.Type == Core.Tools.EventLog.EntryType.Warning) { warningCount++; } }); generator.Generate("#include " + srcFile.Trim('"'), serverTarget, clientTargets, handler); Console.WriteLine("=================================="); Console.WriteLine("== Compilation " + (errorCount > 0 ? "échouée." : "réussie") + "."); Console.WriteLine("== " + errorCount + " erreurs, " + warningCount + " warnings."); Console.WriteLine("Appuyez sur une touche pour terminer l'exécution du programme."); Console.Read(); }