public Form1() { InitializeComponent(); SolutionGenerator solution = new SolutionGenerator("FormGeneratorSolution"); ProjectGenerator project1 = new ProjectGenerator("Project1"); // Form creation FormGenerator form1 = new FormGenerator("generateForm", project1.Name, ""); FormDesignerGenerator form1Designer = new FormDesignerGenerator(form1); // Program creation ProgramGenerator program = new ProgramGenerator(project1.Name, form1); // Add to project and solution project1.Add(form1); project1.Add(form1Designer); project1.Add(program); solution.Add(project1); solution.ExportToFile("Output"); }
public void ConvertProject(Project project, CodeGenLanguage language) { string targetDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "ESC"); if (!Directory.Exists(targetDirectory)) { Directory.CreateDirectory(targetDirectory); } var convertedItems = new List <string>(); foreach (var item in project.Items) { if (item.Type == ProjectItemType.Module) { using (var inputStream = new FileStream(item.SourceFile, FileMode.Open)) { var compilationUnit = BuildCompilationUnit(language); if (ConvertCodeFile(inputStream, Path.Combine(targetDirectory, item.Name + language.GetLanguageExtension()), "Eclipse", compilationUnit)) { project.ConvertedItems.Add(new ConvertedProjectItem(item, item.Name + language.GetLanguageExtension())); } } } else if (item.Type == ProjectItemType.Form) { var form = VB6FormLoader.LoadForm(item.SourceFile); var designerCompilationUnit = BuildCompilationUnit(language); var propertyMappings = BuildPropertyMappings(designerCompilationUnit); var typeMappings = BuildTypeMappings(designerCompilationUnit); var formDesignerGenerator = new FormDesignerGenerator(designerCompilationUnit, propertyMappings, typeMappings); var code = formDesignerGenerator.Generate(form); var designerPath = Path.Combine(targetDirectory, $"{form.Name}.Designer{language.GetLanguageExtension()}"); project.ConvertedItems.Add(new ConvertedProjectItem(item, $"{form.Name}.Designer{language.GetLanguageExtension()}", $"{form.Name}{language.GetLanguageExtension()}")); File.WriteAllText(designerPath, code); // Generate code-behind using (var inputStream = new MemoryStream(Encoding.UTF8.GetBytes(form.CodeBehind))) { var codeBehindCompilationUnit = BuildCompilationUnit(language); codeBehindCompilationUnit.UsingDirectives.Add(codeBehindCompilationUnit.Generator.NamespaceImportDeclaration("System.Windows.Forms")); codeBehindCompilationUnit.BaseType = codeBehindCompilationUnit.Generator.IdentifierName("Form"); codeBehindCompilationUnit.Members.Add(codeBehindCompilationUnit.Generator.ConstructorDeclaration(accessibility: Accessibility.Public, statements: new SyntaxNode[] { codeBehindCompilationUnit.Generator.InvocationExpression(codeBehindCompilationUnit.Generator.MemberAccessExpression(codeBehindCompilationUnit.Generator.ThisExpression(), "InitializeComponent")) })); if (ConvertCodeFile(inputStream, Path.Combine(targetDirectory, item.Name + language.GetLanguageExtension()), item.Name, codeBehindCompilationUnit)) { project.ConvertedItems.Add(new ConvertedProjectItem(item, item.Name + language.GetLanguageExtension())); } } } } var projectWriter = language.GetProjectWriter(); projectWriter.WriteProjectFile(targetDirectory, project); }