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); } }
private static void AddToMRU(ProjectMRUItem item) { ProjectMRU mru = ProjectMRU.Get(); if (mru == null) { mru = new ProjectMRU(); } mru.Items.Add(item); ProjectMRU.Save(mru); }
private void SelectProject(bool Open) { if (RecentProjectList.SelectedIndex >= 0) { ProjectMRUItem item = (ProjectMRUItem)RecentProjectList.Items[RecentProjectList.SelectedIndex]; PopulateProjectDetailsFromFile(item.Path); if (Open) { OpenProject(); } } }
/// <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; } }
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); } }
/// <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; } } }
/// <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; } }
/// <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(); } }
/// <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!"); }