示例#1
0
        private void OpenProject()
        {
            try
            {
                if (PerformValidations())
                {
                    if (!Directory.Exists(ProjectFolder.Text))
                    {
                        //create project folder if it does not exist
                        Directory.CreateDirectory(ProjectFolder.Text);
                    }

                    //populate project folder
                    Project p = PopulateProjectObjectFromForm();

                    //save file
                    this.ProjectFile = String.Format("{0}\\{1}.codetorch", this.ProjectFolder.Text, ProjectName.Text);
                    this.Project     = p;

                    ConfigurationLoader.SerializeObjectToFile(p, this.ProjectFile);

                    //add to recently opened list
                    ProjectMRUItem item = new ProjectMRUItem(ProjectName.Text, this.ProjectFile);
                    AddToMRU(item);

                    Configuration.GetInstance().ConfigurationPath = ConfigurationPath;

                    this.DialogResult = DialogResult.OK;
                }
            }
            catch (Exception ex)
            {
                ErrorManager.HandleError(ex);
            }
        }
示例#2
0
        private static void AddToMRU(ProjectMRUItem item)
        {
            ProjectMRU mru = ProjectMRU.Get();

            if (mru == null)
            {
                mru = new ProjectMRU();
            }
            mru.Items.Add(item);

            ProjectMRU.Save(mru);
        }
示例#3
0
        private void SelectProject(bool Open)
        {
            if (RecentProjectList.SelectedIndex >= 0)
            {
                ProjectMRUItem item = (ProjectMRUItem)RecentProjectList.Items[RecentProjectList.SelectedIndex];

                PopulateProjectDetailsFromFile(item.Path);

                if (Open)
                {
                    OpenProject();
                }
            }
        }
示例#4
0
        /// <summary>
        /// Update UI to selected project data.
        /// </summary>
        /// <param name="sender">sender info</param>
        /// <param name="e">event data</param>
        private void mruComboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            int anIndex = mruComboBox.SelectedIndex;

            if (anIndex >= 0 && anIndex < mProjectMRUList.Count)
            {
                ProjectMRUItem anItem = mProjectMRUList[anIndex] as ProjectMRUItem;

                outputFileTextBox.Text            = anItem.mOutFileName;
                outputDirTextBox.Text             = anItem.mOutDir;
                projectNameTextBox.Text           = anItem.mProjectName;
                resourceXMLTextBox.Text           = anItem.mResourceXMLPath;
                functionPrefixTextBox.Text        = anItem.mFunctionPrefix;
                reportUnusedFilesCheckBox.Checked = anItem.mReportUnusedFiles;
                writeDelBatchCheckBox.Checked     = anItem.mWriteDelBatchFile;
                baseResPathTextBox.Text           = anItem.mBaseResPath;
            }
        }
示例#5
0
        void removeProject_Click(object sender, EventArgs e)
        {
            try
            {
                if (RecentProjectList.SelectedIndex >= 0)
                {
                    ProjectMRUItem selectedItem = (ProjectMRUItem)RecentProjectList.Items[RecentProjectList.SelectedIndex];
                    ProjectMRU     srcMRU       = ProjectMRU.Get();
                    ProjectMRU     dstMRU       = new ProjectMRU();

                    foreach (ProjectMRUItem item in srcMRU.Items)
                    {
                        if (!item.Equals(selectedItem))
                        {
                            if (File.Exists(item.Path))
                            {
                                dstMRU.Items.Add(item);
                            }
                        }
                    }



                    RecentProjectList.Items.Remove(selectedItem);

                    ProjectGroupBox.Enabled = false;

                    Open.Enabled = false;
                    ClearProjectDetails();

                    ProjectMRU.Save(dstMRU);
                }
            }
            catch (Exception ex)
            {
                ErrorManager.HandleError(ex);
            }
        }
示例#6
0
        /// <summary>
        /// Update MRU combo box for current project name.
        /// </summary>
        /// <param name="sender">sender info</param>
        /// <param name="e">event data</param>
        private void projectNameTextBox_LostFocus(object sender, EventArgs e)
        {
            int anIndex = mruComboBox.SelectedIndex;

            if (anIndex >= 0 && anIndex < mProjectMRUList.Count)
            {
                ProjectMRUItem anItem = mProjectMRUList[anIndex] as ProjectMRUItem;

                anItem.mProjectName      = projectNameTextBox.Text;
                mProjectMRUList[anIndex] = anItem;

                ArrayList aNewMRUList = new ArrayList();
                foreach (ProjectMRUItem i in mProjectMRUList)
                {
                    aNewMRUList.Add(i.mProjectName);
                }
                mruComboBox.DataSource = aNewMRUList;

                if (anIndex >= 0 && anIndex < aNewMRUList.Count)
                {
                    mruComboBox.SelectedIndex = anIndex;
                }
            }
        }
示例#7
0
        /// <summary>
        /// Create a new project.
        /// </summary>
        /// <param name="sender">sender info</param>
        /// <param name="e">event data</param>
        private void newProjectButton_Click(object sender, EventArgs e)
        {
            ProjectMRUItem aNewItem = new ProjectMRUItem();

            aNewItem.mProjectName = "New Project";
            aNewItem.mOutFileName = "Res";

            int aNewIndex = mProjectMRUList.Count;

            mProjectMRUList.Add(aNewItem);

            ArrayList aNewMRUList = new ArrayList();

            foreach (ProjectMRUItem i in mProjectMRUList)
            {
                aNewMRUList.Add(i.mProjectName);
            }
            mruComboBox.DataSource = aNewMRUList;

            if (aNewIndex >= 0 && aNewIndex < aNewMRUList.Count)
            {
                mruComboBox.SelectedIndex = aNewIndex;
            }
        }
示例#8
0
        /// <summary>
        /// Try to load the settings from projects.xml file and initialize UI.
        /// </summary>
        /// <param name="e">event data</param>
        protected override void OnLoad(EventArgs e)
        {
            // call base, raises the OnLoad event
            base.OnLoad(e);

            mProjectMRUList        = new ArrayList();
            outputFileTextBox.Text = "Res";
            outnameLabel.Text      = "Res.h / Res.cpp";

            if (File.Exists("projects.xml"))
            {
                XmlTextReader aReader = new XmlTextReader(OpenStreamReaderWithEncoding("projects.xml"));

                while (aReader.Read())
                {
                    switch (aReader.NodeType)
                    {
                    case XmlNodeType.Element:     // The node is an element.

                        if (aReader.Name.ToLower() == "project")
                        {
                            ProjectMRUItem aNewItem = new ProjectMRUItem();

                            aNewItem.mProjectName       = aReader.GetAttribute("id");
                            aNewItem.mResourceXMLPath   = aReader.GetAttribute("xml_path");
                            aNewItem.mOutDir            = aReader.GetAttribute("out_path");
                            aNewItem.mOutFileName       = aReader.GetAttribute("res_name");
                            aNewItem.mFunctionPrefix    = aReader.GetAttribute("func_prefix");
                            aNewItem.mReportUnusedFiles = Convert.ToBoolean(aReader.GetAttribute("report_unused"));
                            aNewItem.mWriteDelBatchFile = Convert.ToBoolean(aReader.GetAttribute("write_delbatch"));
                            aNewItem.mBaseResPath       = aReader.GetAttribute("base_respath");

                            mProjectMRUList.Add(aNewItem);
                        }
                        break;

                    case XmlNodeType.Text:     // Display the text in each element.

                        break;

                    case XmlNodeType.EndElement:     // Display the end of the element.

                        break;
                    }
                }

                aReader.Close();
            }

            // update project names
            ArrayList aProjectNameList = new ArrayList();

            foreach (ProjectMRUItem i in mProjectMRUList)
            {
                aProjectNameList.Add(i.mProjectName);
            }

            mruComboBox.DataSource = aProjectNameList;

            // select the first project or, if no project exists,
            // create a new one via simulated newProjectButton click
            if (aProjectNameList.Count > 0)
            {
                mruComboBox.SelectedIndex = 0;
            }
            else
            {
                // moved from CTor to OnLoad, CTor cant raise control events
                // because the controls are not created yet :)
                newProjectButton.PerformClick();
            }
        }
示例#9
0
        /// <summary>
        /// Parse the XML Resource file, generate C++ source files,
        /// report unused files (if checked), save project information.
        /// </summary>
        /// <param name="sender">sender info</param>
        /// <param name="e">event data</param>
        private void generate_Click(object sender, EventArgs e)
        {
            //////////////////////////////////////////////////////////////////////////
            // Instantiate the classes which are doing the work for us.
            //////////////////////////////////////////////////////////////////////////
            ResourceParser aResGen      = new ResourceParser(this);
            CodeWriter     aCodeWriter  = new CodeWriter(this);
            UnusedFiles    aUnusedFiles = new UnusedFiles();

            int anIndex = mruComboBox.SelectedIndex;

            if (anIndex >= 0 && anIndex < mProjectMRUList.Count)
            {
                ProjectMRUItem anItem = mProjectMRUList[anIndex] as ProjectMRUItem;

                anItem.mOutFileName       = outputFileTextBox.Text;
                anItem.mOutDir            = outputDirTextBox.Text;
                anItem.mResourceXMLPath   = resourceXMLTextBox.Text;
                anItem.mFunctionPrefix    = functionPrefixTextBox.Text;
                anItem.mReportUnusedFiles = reportUnusedFilesCheckBox.Checked;
                anItem.mWriteDelBatchFile = writeDelBatchCheckBox.Checked;
                anItem.mBaseResPath       = baseResPathTextBox.Text;

                Cursor.Current = Cursors.WaitCursor;
                consoleOutListBox.Items.Clear();

                WriteLine("Parsing resource...");

                if (aResGen.ParseResource(anItem.mResourceXMLPath) == true)
                {
                    WriteLine("Parsing resource file successful!");
                    WriteLine("Writing source code...");

                    if (aCodeWriter.WriteSourceCode(anItem.mOutDir, anItem.mOutFileName, anItem.mFunctionPrefix) == true)
                    {
                        WriteLine("Writing source code successful!");
                    }
                    else
                    {
                        Cursor.Current = Cursors.Default;

                        WriteLine("Error writing source code: " + aCodeWriter.GetError());
                        MessageBox.Show(this, aCodeWriter.GetError(), "Code Generator Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

                        return;
                    }

                    if (anItem.mReportUnusedFiles == true)
                    {
                        String aReport = aUnusedFiles.ReportUnusedFiles(anItem.mBaseResPath, anItem.mWriteDelBatchFile);

                        Cursor.Current = Cursors.Default;

                        if (aUnusedFiles.HadError() == true)
                        {
                            aReport = aUnusedFiles.GetError();
                            WriteLine("Error Checking Unused Files :" + aReport);
                            MessageBox.Show(this, aReport, "Error Checking Unused Files");
                        }
                        else
                        {
                            WriteLine("Unused Resources:");
                            WriteLine(aReport);
                            MessageBox.Show(this, aReport, "Unused Resources");
                        }
                    }
                }
                else
                {
                    Cursor.Current = Cursors.Default;

                    WriteLine("Error parsing resource: " + aResGen.GetError());
                    MessageBox.Show(this, aResGen.GetError(), "Parsing Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    return;
                }
            }

            WriteLine("Generation Complete!");
        }