Example #1
0
        static bool ProjectNameIsLanguageKeyword(string language, string projectName)
        {
            if (String.IsNullOrEmpty(language))
            {
                return(false);
            }

            LanguageBinding binding = LanguageBindingService.GetBindingPerLanguageName(language);

            if (binding != null)
            {
                var codeDomProvider = binding.GetCodeDomProvider();
                if (codeDomProvider != null)
                {
                    projectName = SanitisePotentialNamespace(projectName);
                    if (projectName.Contains('.'))
                    {
                        return(NameIsLanguageKeyword(codeDomProvider, projectName.Split('.')));
                    }
                    return(!codeDomProvider.IsValidIdentifier(projectName));
                }
            }

            return(false);
        }
Example #2
0
        protected ILanguageBinding GetLanguageBinding(string language)
        {
            var binding = LanguageBindingService.GetBindingPerLanguageName(language);

            if (binding == null)
            {
                throw new InvalidOperationException("Language '" + language + "' not found");
            }
            return(binding);
        }
        internal static LanguageBinding GetLanguageBinding(string language)
        {
            var binding = LanguageBindingService.GetBindingPerLanguageName(language);

            if (binding == null)
            {
                throw new InvalidOperationException(GettextCatalog.GetString("Language '{0}' not found", language));
            }
            return(binding);
        }
        public void AddReference()
        {
            foreach (ListViewItem item in SelectedItems)
            {
                IProject         project = (IProject)item.Tag;
                ILanguageBinding binding = LanguageBindingService.GetBindingPerLanguageName(project.Language);

                selectDialog.AddReference(
                    project.Name, "Project", project.OutputAssemblyFullPath,
                    new ProjectReferenceProjectItem(selectDialog.ConfigureProject, project)
                    );
            }
        }
Example #5
0
        public static Ambience GetAmbienceForLanguage(string languageName)
        {
            ILanguageBinding binding = LanguageBindingService.GetBindingPerLanguageName(languageName);

            if (binding != null)
            {
                return(GetAmbienceForFile(binding.GetFileName("a")));
            }
            else
            {
                return(defaultAmbience);
            }
        }
Example #6
0
        public StringCollection GenerateFiles(string guiFolder)
        {
            StringCollection files = new StringCollection();

            if (hasError)
            {
                return(files);
            }

            IDotNetLanguageBinding binding  = LanguageBindingService.GetBindingPerLanguageName(project.LanguageName) as IDotNetLanguageBinding;
            CodeDomProvider        provider = binding.GetCodeDomProvider();

            if (provider == null)
            {
                throw new UserException("Code generation not supported for language: " + project.LanguageName);
            }
//			string path = Path.Combine (guiFolder, binding.GetFileName ("generated"));
//			if (!System.IO.File.Exists (path)) {
//				GuiBuilderService.SteticApp.GenerateProjectCode (path, "Stetic", provider, null);
//			}
//			files.Add (path);
//
//			if (Windows != null) {
//				foreach (GuiBuilderWindow win in Windows)
//					files.Add (GuiBuilderService.GenerateSteticCodeStructure (project, win.RootWidget, true, false));
//			}
//
//			foreach (Stetic.ActionGroupInfo ag in SteticProject.ActionGroups)
//				files.Add (GuiBuilderService.GenerateSteticCodeStructure (project, ag, true, false));
            GtkDesignInfo info      = GtkDesignInfo.FromProject(project);
            string        extension = string.Format("{0}.{1}", info.BuildFileExtension, provider.FileExtension);

            foreach (string file in Directory.GetFiles(guiFolder))
            {
                if (file.Contains(extension))
                {
                    files.Add(file);
                }
            }

            return(files);
        }
Example #7
0
        public StringCollection GenerateFiles(string guiFolder)
        {
            StringCollection files = new StringCollection();

            if (hasError)
            {
                return(files);
            }

            IDotNetLanguageBinding binding = LanguageBindingService.GetBindingPerLanguageName(project.LanguageName) as IDotNetLanguageBinding;
            string path = Path.Combine(guiFolder, binding.GetFileName("generated"));

            if (!System.IO.File.Exists(path))
            {
                // Generate an empty build class
                CodeDomProvider provider = binding.GetCodeDomProvider();
                if (provider == null)
                {
                    throw new UserException("Code generation not supported for language: " + project.LanguageName);
                }
                GuiBuilderService.SteticApp.GenerateProjectCode(path, "Stetic", provider, null);
            }
            files.Add(path);

            if (Windows != null)
            {
                foreach (GuiBuilderWindow win in Windows)
                {
                    files.Add(GuiBuilderService.GenerateSteticCodeStructure(project, win.RootWidget, true, false));
                }
            }

            foreach (Stetic.ActionGroupInfo ag in SteticProject.ActionGroups)
            {
                files.Add(GuiBuilderService.GenerateSteticCodeStructure(project, ag, true, false));
            }

            return(files);
        }
        public override void ModifyTags(SolutionItem policyParent, Project project, string language, string identifier, string fileName, ref Dictionary <string, string> tags)
        {
            tags ["Doctype"] = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">";

            //get a language binding
            IDotNetLanguageBinding langbinding = null;

            if (project == null)
            {
                langbinding = (IDotNetLanguageBinding)LanguageBindingService.GetBindingPerLanguageName(language);
            }
            else
            {
                DotNetProject dnp = (DotNetProject)project;
                langbinding = dnp.LanguageBinding;
            }

            // work out the ASP.NET language code. Although it's  originally a hack around MD's VBNet language name
            // not corresponding to any of the valid ASP.NET codes, we also provide an interface that
            // non-core language bindings can implement to advertise that they support ASP.NET
            string languageCode = language;

            if (langbinding is IAspNetLanguageBinding)
            {
                languageCode = ((IAspNetLanguageBinding)langbinding).AspNetLanguageCode;
            }
            else if (language == "VBNet")
            {
                languageCode = "VB";
            }
            else if (language != "C#")
            {
                LoggingService.LogWarning("The language binding '{0}' does not have explicit support for ASP.NET", language);
            }
            tags ["AspNetLanguage"] = languageCode;

            base.ModifyTags(policyParent, project, language, identifier, fileName, ref tags);

            //nothing after this point is relevant to tag substitution for filenames,
            //and some will even crash, so drop out now
            if (fileName == null)
            {
                return;
            }

            // Build tags for ${CodeRegion:#} substitutions
            foreach (string regionName in codeAreas.Keys)
            {
                var templ = (CodeTranslationFileDescriptionTemplate)codeAreas [regionName];

                //makes CodeTranslationFile's internal name substitition easier
                var name = (string)tags ["Name"];
                templ.GetFileName(policyParent, project, language, project == null? null :project.BaseDirectory, name);

                Stream       stream = templ.CreateFileContent(policyParent, project, language, fileName, identifier);
                StreamReader reader = new StreamReader(stream);
                tags ["CodeRegion:" + regionName] = reader.ReadToEnd();
                reader.Close();
                stream.Close();
            }
        }