Beispiel #1
0
        /// <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();
        }
Beispiel #2
0
        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();
        }