public bool CanHandle(FilePath fileName, string mimeType, MonoDevelop.Projects.Project ownerProject) { if (excludeThis) { return(false); } if (fileName.IsNullOrEmpty) { return(false); } if (!IdeApp.Workspace.IsOpen) { return(false); } if (GetActionGroup(fileName) == null) { return(false); } excludeThis = true; var db = DisplayBindingService.GetDefaultViewBinding(fileName, mimeType, ownerProject); excludeThis = false; return(db != null); }
public virtual bool CanCreateUnsavedFiles(FileDescriptionTemplate newfile, SolutionFolderItem policyParent, Project project, string directory, string language, string name) { if (project != null) { return(true); } else { var singleFile = newfile as SingleFileDescriptionTemplate; if (singleFile == null) { return(false); } if (directory != null) { return(true); } else { string fileName = singleFile.GetFileName(policyParent, project, language, directory, name); string mimeType = GuessMimeType(fileName); return(DisplayBindingService.GetDefaultViewBinding(null, mimeType, null) != null); } } }
static bool FillViewers(CustomCommonFileDialogComboBox combo, string fileName) { combo.Items.Clear(); if (String.IsNullOrEmpty(fileName) || Directory.Exists(fileName)) { combo.Enabled = false; return(false); } bool hasBench = false; var projectService = IdeApp.Services.ProjectService; if (projectService.IsWorkspaceItemFile(fileName) || projectService.IsSolutionItemFile(fileName)) { hasBench = true; combo.Items.Add(new ViewerComboItem(null, GettextCatalog.GetString("Solution Workbench"))); } foreach (var vw in DisplayBindingService.GetFileViewers(fileName, null)) { if (!vw.IsExternal) { combo.Items.Add(new ViewerComboItem(vw, vw.Title)); } } combo.Enabled = combo.Items.Count >= 1; return(hasBench); }
// Sort of ported from the MacSupport addin static void FillViewers(List <FileViewer> currentViewers, ComboBox viewerBox, string fileName) { currentViewers.Clear(); viewerBox.Items.Clear(); if (String.IsNullOrEmpty(fileName) || Directory.Exists(fileName)) { viewerBox.Enabled = false; return; } var projectService = IdeApp.Services.ProjectService; if (projectService.IsWorkspaceItemFile(fileName) || projectService.IsSolutionItemFile(fileName)) { viewerBox.Items.Add(GettextCatalog.GetString("Solution Workbench")); currentViewers.Add(null); } foreach (var vw in DisplayBindingService.GetFileViewers(fileName, null)) { if (!vw.IsExternal) { viewerBox.Items.Add(vw.Title); currentViewers.Add(vw); } } viewerBox.Enabled = currentViewers.Count > 1; viewerBox.SelectedIndex = 0; }
public virtual bool CanHandle(FilePath fileName, string mimeType, Project ownerProject) { if (excludeThis) { return(false); } var dprj = ownerProject as AbstractDProject; if (dprj == null) { return(false); } var mod = GlobalParseCache.GetModule(fileName.ToString()); if (GetGtkDMainClass(mod) == null) { return(false); } excludeThis = true; var db = DisplayBindingService.GetDefaultViewBinding(fileName, mimeType, ownerProject); excludeThis = false; return(db != null); }
public void SetAsDefault(FilePath fileName, string mimeType, OpenWithFileViewer fileViewer) { ClearDefault(fileName, mimeType); if (fileViewer == null) { return; } var key = GetKey(fileName, mimeType); var userDefinedFileViewer = fileViewer as UserDefinedOpenWithFileViewer; if (userDefinedFileViewer != null) { defaultDisplayBindings [key] = userDefinedFileViewer.DisplayBinding; userDefinedFileViewer.SetAsDefault(); return; } key.IsApplication = fileViewer.IsApplication; key.IsDisplayBinding = fileViewer.IsDisplayBinding; mappings [key] = fileViewer.GetMappingKey(); var displayBinding = DisplayBindingFactory.CreateDisplayBinding(fileName, mimeType, fileViewer); defaultDisplayBindings [key] = displayBinding; DisplayBindingService.RegisterRuntimeDisplayBinding(displayBinding); }
public override bool CanCreateContentForUri(string fileName) { Project project = IdeApp.Workspace.GetProjectContainingFile(fileName); GtkDesignInfo info = GtkDesignInfo.FromProject((DotNetProject)project); if (excludeThis) { return(false); } if (fileName.Contains(info.BuildFileExtension)) { return(false); } if (!IdeApp.Workspace.IsOpen) { return(false); } if (GetActionGroup(fileName) == null) { return(false); } excludeThis = true; var db = DisplayBindingService.GetDefaultBindingForUri(fileName); excludeThis = false; return(db != null); }
internal static void PopulateOpenWithViewers(CommandArrayInfo info, Project project, string filePath) { var viewers = DisplayBindingService.GetFileViewers(filePath, project).ToList(); //show the default viewer first var def = viewers.FirstOrDefault(v => v.CanUseAsDefault) ?? viewers.FirstOrDefault(v => v.IsExternal); if (def != null) { CommandInfo ci = info.Add(def.Title, def); ci.Description = GettextCatalog.GetString("Open with '{0}'", def.Title); if (viewers.Count > 1) { info.AddSeparator(); } } //then the builtins, followed by externals FileViewer prev = null; foreach (FileViewer fv in viewers) { if (def != null && fv.Equals(def)) { continue; } if (prev != null && fv.IsExternal != prev.IsExternal) { info.AddSeparator(); } CommandInfo ci = info.Add(fv.Title, fv); ci.Description = GettextCatalog.GetString("Open with '{0}'", fv.Title); prev = fv; } }
/// <summary> /// Ensures that all possible secondary view contents are attached. /// This is primarily used to add the FormsDesigner view content for files /// containing partial classes after the designer file has been parsed if /// the view content has been created too early on startup. /// </summary> void RefreshSecondaryViewContents() { if (content == null) { return; } int oldSvcCount = content.SecondaryViewContents.Count; DisplayBindingService.AttachSubWindows(content, true); if (content.SecondaryViewContents.Count > oldSvcCount) { LoggingService.Debug("Attaching new secondary view contents to '" + this.Title + "'"); if (viewTabControl == null) { // The tab control needs to be created first. Controls.Remove(content.Control); CreateViewTabControl(); AttachSecondaryViewContent(content); Controls.Add(viewTabControl); } foreach (ISecondaryViewContent svc in content.SecondaryViewContents) { if (svc.WorkbenchWindow == null) { AttachSecondaryViewContent(svc); } } } }
/// <summary> /// Shows the OpenWith dialog for the specified files. /// </summary> public static void OpenFilesWith(string[] fileNames) { if (fileNames.Length == 0) { return; } List <DisplayBindingDescriptor> codons = DisplayBindingService.GetCodonsPerFileName(fileNames[0]).ToList(); for (int i = 1; i < fileNames.Length; i++) { var codonsForThisFile = DisplayBindingService.GetCodonsPerFileName(fileNames[i]); codons.RemoveAll(c => !codonsForThisFile.Contains(c)); } if (codons.Count == 0) { return; } int defaultCodonIndex = codons.IndexOf(DisplayBindingService.GetDefaultCodonPerFileName(fileNames[0])); if (defaultCodonIndex < 0) { defaultCodonIndex = 0; } //using (OpenWithDialog dlg = new OpenWithDialog(codons, defaultCodonIndex, Path.GetExtension(fileNames[0]))) { // if (dlg.ShowDialog(WorkbenchSingleton.MainWin32Window) == DialogResult.OK) { // foreach (string fileName in fileNames) { // FileUtility.ObservedLoad(new FileService.LoadFileWrapper(dlg.SelectedBinding.Binding, true).Invoke, fileName); // } // } //} }
Document DoShow() { Document result = null; foreach (var view in Ide.IdeApp.Workbench.Documents) { if (view.GetContent <AssemblyBrowserViewContent> () != null) { view.Window.SelectWindow(); result = view; break; } } if (result == null) { var binding = DisplayBindingService.GetBindings <AssemblyBrowserDisplayBinding> ().FirstOrDefault(); var assemblyBrowserView = binding != null?binding.GetViewContent() : new AssemblyBrowserViewContent(); assemblyBrowserView.FillWidget(); result = Ide.IdeApp.Workbench.OpenDocument(assemblyBrowserView, true); } if (idString != null) { var view = result.GetContent <AssemblyBrowserViewContent> (); view.Widget.suspendNavigation = true; view.EnsureDefinitionsLoaded(definitions); view.Open(idString, expandNode: false); } return(result); }
void FillViewers() { ((Gtk.ListStore)viewerSelector.Model).Clear(); currentViewers.Clear(); if (Filenames.Length == 0 || Filename.Length == 0 || System.IO.Directory.Exists(Filename)) { return; } if (IdeApp.Services.ProjectService.IsWorkspaceItemFile(Filename) || IdeApp.Services.ProjectService.IsSolutionItemFile(Filename)) { viewerSelector.AppendText(GettextCatalog.GetString("Solution Workbench")); currentViewers.Add(null); } foreach (FileViewer vw in DisplayBindingService.GetFileViewers(Filename, null)) { if (!vw.IsExternal) { viewerSelector.AppendText(vw.Title); currentViewers.Add(vw); } } viewerSelector.Active = 0; viewerLabel.Sensitive = viewerSelector.Sensitive = currentViewers.Count > 1; }
static bool FillViewers(CustomCommonFileDialogComboBox combo, string fileName) { combo.Items.Clear(); if (String.IsNullOrEmpty(fileName) || Directory.Exists(fileName)) { combo.Enabled = false; return(false); } int selected = -1; int i = 0; bool hasBench = false; var projectService = IdeApp.Services.ProjectService; if (projectService.IsWorkspaceItemFile(fileName) || projectService.IsSolutionItemFile(fileName)) { hasBench = true; combo.Items.Add(new ViewerComboItem(null, GettextCatalog.GetString("Solution Workbench"))); if (!CanBeOpenedInAssemblyBrowser(fileName)) { selected = 0; } i++; } foreach (var vw in DisplayBindingService.GetFileViewers(fileName, null)) { if (!vw.IsExternal) { combo.Items.Add(new ViewerComboItem(vw, vw.Title)); if (vw.CanUseAsDefault && selected == -1) { selected = i; } i++; } } if (selected == -1) { selected = 0; } combo.Enabled = combo.Items.Count >= 1; if (selected > 0) { // Unable to set SelectedIndex until ApplyControlPropertyChange called for Items // which causes the combo box selection to visibly change selection twice. Instead just // make the default item the first one in the combo. var item = combo.Items[selected]; combo.Items.RemoveAt(selected); combo.Items.Insert(0, item); } return(hasBench); }
void RemoveButtonClick(object sender, EventArgs e) { DisplayBindingService.RemoveExternalProcessDisplayBinding((ExternalProcessDisplayBinding)SelectedBinding.GetLoadedBinding()); if (defaultBindingIndex == programListBox.SelectedIndex) { defaultBindingIndex = -1; } programListBox.Items.RemoveAt(programListBox.SelectedIndex); }
public override IViewContent CreateContentForUri(string fileName) { excludeThis = true; var db = DisplayBindingService.GetDefaultBindingForUri(fileName); GuiBuilderView view = new GuiBuilderView(db.CreateContentForUri(fileName), GetWindow(fileName)); excludeThis = false; return(view); }
void FillViewers() { ((Gtk.ListStore)viewerSelector.Model).Clear(); currentViewers.Clear(); if (Filenames.Length == 0 || Filename.Length == 0 || System.IO.Directory.Exists(Filename)) { return; } int selected = -1; int i = 0; if (IdeApp.Services.ProjectService.IsWorkspaceItemFile(Filename) || IdeApp.Services.ProjectService.IsSolutionItemFile(Filename)) { viewerSelector.AppendText(GettextCatalog.GetString("Solution Workbench")); currentViewers.Add(null); if (closeWorkspaceCheck.Visible) { closeWorkspaceCheck.Active = true; } // Default exe/dll to AssemblyBrowser, solutions/projects to Solution Workbench. // HACK: Couldn't make it a generic SolutionItemFile based conditional, .csproj fits under this category also. if (!(Filename.EndsWith(".exe", StringComparison.OrdinalIgnoreCase) || Filename.EndsWith(".dll", StringComparison.OrdinalIgnoreCase))) { selected = 0; } i++; } foreach (FileViewer vw in DisplayBindingService.GetFileViewers(Filename, null)) { if (!vw.IsExternal) { viewerSelector.AppendText(vw.Title); currentViewers.Add(vw); if (vw.CanUseAsDefault && selected == -1) { selected = i; } i++; } } if (selected == -1) { selected = 0; } viewerSelector.Active = selected; viewerLabel.Sensitive = viewerSelector.Sensitive = currentViewers.Count > 1; }
ViewContent IViewDisplayBinding.CreateContent(FilePath fileName, string mimeType, Project ownerProject) { exclude = true; var defaultViewBinding = DisplayBindingService.GetDefaultViewBinding(fileName, mimeType, ownerProject); var content = defaultViewBinding.CreateContent(fileName, mimeType, ownerProject); var result = new EditorView(content); exclude = false; return(result); }
public virtual IViewContent CreateContent(FilePath fileName, string mimeType, Project ownerProject) { excludeThis = true; var db = DisplayBindingService.GetDefaultViewBinding(fileName, mimeType, ownerProject); var content = db.CreateContent(fileName, mimeType, ownerProject); var view = new GuiBuilderView(content, GetWindow(fileName)); excludeThis = false; return(view); }
public IViewContent CreateContent(FilePath fileName, string mimeType, Project ownerProject) { excludeThis = true; var db = DisplayBindingService.GetDefaultViewBinding(fileName, mimeType, ownerProject); GtkDesignInfo info = GtkDesignInfo.FromProject((DotNetProject)ownerProject); var content = db.CreateContent(fileName, mimeType, ownerProject); ActionGroupView view = new ActionGroupView(content, GetActionGroup(fileName), info.GuiBuilderProject); excludeThis = false; return(view); }
/// <summary> /// Shows the OpenWith dialog for the specified file. /// </summary> static void OpenWith(string fileName) { var codons = DisplayBindingService.GetCodonsPerFileName(fileName); int defaultCodonIndex = codons.IndexOf(DisplayBindingService.GetDefaultCodonPerFileName(fileName)); using (OpenWithDialog dlg = new OpenWithDialog(codons, defaultCodonIndex, Path.GetExtension(fileName))) { if (dlg.ShowDialog(WorkbenchSingleton.MainForm) == DialogResult.OK) { FileUtility.ObservedLoad(new FileService.LoadFileWrapper(dlg.SelectedBinding.Binding, true).Invoke, fileName); } } }
public static void InitializeWorkbench(IWorkbench workbench, IWorkbenchLayout layout) { WorkbenchSingleton.workbench = workbench; LanguageService.ValidateLanguage(); DisplayBindingService.InitializeService(); LayoutConfiguration.LoadLayoutConfiguration(); FileService.InitializeService(); //by hanz //DomHostCallback.Register(); // must be called after StatusBarService.Initialize() //ParserService.InitializeParserService(); //TaskService.Initialize(); //Bookmarks.BookmarkManager.Initialize(); //Project.CustomToolsService.Initialize(); //Project.BuildModifiedProjectsOnlyService.Initialize(); var messageService = ICSharpCode.Core.Services.ServiceManager.Instance.MessageService as IDialogMessageService; if (messageService != null) { messageService.DialogOwner = workbench.MainWin32Window; Debug.Assert(messageService.DialogOwner != null); messageService.DialogSynchronizeInvoke = workbench.SynchronizingObject; } workbench.Initialize(); workbench.SetMemento(PropertyService.Get(workbenchMemento, new Properties())); workbench.WorkbenchLayout = layout; ApplicationStateInfoService.RegisterStateGetter(activeContentState, delegate { return(WorkbenchSingleton.Workbench.ActiveContent); }); OnWorkbenchCreated(); // initialize workbench-dependent services: //Project.ProjectService.InitializeService();//by hanz NavigationService.InitializeService(); workbench.ActiveContentChanged += delegate { Debug.WriteLine("ActiveContentChanged to " + workbench.ActiveContent); LoggingService.Debug("ActiveContentChanged to " + workbench.ActiveContent); }; workbench.ActiveViewContentChanged += delegate { Debug.WriteLine("ActiveViewContentChanged to " + workbench.ActiveViewContent); LoggingService.Debug("ActiveViewContentChanged to " + workbench.ActiveViewContent); }; workbench.ActiveWorkbenchWindowChanged += delegate { Debug.WriteLine("ActiveWorkbenchWindowChanged to " + workbench.ActiveWorkbenchWindow); LoggingService.Debug("ActiveWorkbenchWindowChanged to " + workbench.ActiveWorkbenchWindow); }; }
public override IViewContent CreateContentForUri(string fileName) { excludeThis = true; var db = DisplayBindingService.GetDefaultBindingForUri(fileName); Project project = IdeApp.Workspace.GetProjectContainingFile(fileName); GtkDesignInfo info = GtkDesignInfo.FromProject((DotNetProject)project); ActionGroupView view = new ActionGroupView(db.CreateContentForUri(fileName), GetActionGroup(fileName), info.GuiBuilderProject); excludeThis = false; return(view); }
void FillViewers() { ((Gtk.ListStore)viewerSelector.Model).Clear(); currentViewers.Clear(); if (Filenames.Length == 0 || Filename.Length == 0 || System.IO.Directory.Exists(Filename)) { return; } int selected = -1; int i = 0; if (IdeApp.Services.ProjectService.IsWorkspaceItemFile(Filename) || IdeApp.Services.ProjectService.IsSolutionItemFile(Filename)) { viewerSelector.AppendText(GettextCatalog.GetString("Solution Workbench")); currentViewers.Add(null); if (closeWorkspaceCheck.Visible) { closeWorkspaceCheck.Active = true; } selected = 0; i++; } foreach (FileViewer vw in DisplayBindingService.GetFileViewers(Filename, null)) { if (!vw.IsExternal) { viewerSelector.AppendText(vw.Title); currentViewers.Add(vw); if (vw.CanUseAsDefault && selected == -1) { selected = i; } i++; } } if (selected == -1) { selected = 0; } viewerSelector.Active = selected; viewerLabel.Sensitive = viewerSelector.Sensitive = currentViewers.Count > 1; }
void SetAsDefaultButtonClick(object sender, EventArgs e) { if (defaultBindingIndex >= 0) { programListBox.Items[defaultBindingIndex] = new ListEntry( ((ListEntry)programListBox.Items[defaultBindingIndex]).desc, false); } defaultBindingIndex = programListBox.SelectedIndex; programListBox.Items[defaultBindingIndex] = new ListEntry( ((ListEntry)programListBox.Items[defaultBindingIndex]).desc, true); DisplayBindingService.SetDefaultCodon(fileExtension, SelectedBinding); }
void AddButtonClick(object sender, EventArgs e) { using (AddOpenWithEntryDialog dlg = new AddOpenWithEntryDialog()) { if (dlg.ShowDialog(this) == DialogResult.OK) { ExternalProcessDisplayBinding binding = new ExternalProcessDisplayBinding { FileExtension = fileExtension, CommandLine = dlg.ProgramName, Title = dlg.DisplayName, Id = Guid.NewGuid().ToString() }; programListBox.Items.Add(new ListEntry(DisplayBindingService.AddExternalProcessDisplayBinding(binding), false)); } } }
public ViewContent CreateContent(MonoDevelop.Core.FilePath fileName, string mimeType, Project ownerProject) { excludeThis = true; var db = DisplayBindingService.GetDefaultViewBinding(fileName, mimeType, ownerProject); var content = db.CreateContent(fileName, mimeType, ownerProject); var window = GetWindow(fileName, ownerProject); if (window == null) { throw new InvalidOperationException("GetWindow == null"); } GuiBuilderView view = new GuiBuilderView(content, window); excludeThis = false; return(view); }
protected override void Run() { foreach (var view in IdeApp.Workbench.Documents) { if (view.GetContent <AssemblyBrowserViewContent> () != null) { view.Window.SelectWindow(); return; } } var binding = DisplayBindingService.GetBindings <AssemblyBrowserDisplayBinding> ().FirstOrDefault(); var assemblyBrowserView = binding != null?binding.GetViewContent() : new AssemblyBrowserViewContent(); assemblyBrowserView.FillWidget(); IdeApp.Workbench.OpenDocument(assemblyBrowserView, true); }
public static void InitializeWorkbench(IWorkbench workbench, IWorkbenchLayout layout) { WorkbenchSingleton.workbench = workbench; DisplayBindingService.InitializeService(); LayoutConfiguration.LoadLayoutConfiguration(); FileService.InitializeService(); StatusBarService.Initialize(); DomHostCallback.Register(); // must be called after StatusBarService.Initialize() ParserService.InitializeParserService(); Bookmarks.BookmarkManager.Initialize(); Project.CustomToolsService.Initialize(); Project.BuildModifiedProjectsOnlyService.Initialize(); workbench.Initialize(); workbench.SetMemento(PropertyService.Get(workbenchMemento, new Properties())); caller = new STAThreadCaller(workbench.MainForm); WinFormsMessageService.DialogOwner = workbench.MainForm; WinFormsMessageService.DialogSynchronizeInvoke = workbench.MainForm; PropertyService.PropertyChanged += new PropertyChangedEventHandler(TrackPropertyChanges); ResourceService.LanguageChanged += delegate { workbench.RedrawAllComponents(); }; ApplicationStateInfoService.RegisterStateGetter(activeContentState, delegate { return(WorkbenchSingleton.Workbench.ActiveContent); }); // attach workbench layout -> load pads workbench.WorkbenchLayout = layout; OnWorkbenchCreated(); // initialize workbench-dependent services: Project.ProjectService.InitializeService(); NavigationService.InitializeService(); workbench.ActiveContentChanged += delegate { LoggingService.Debug("ActiveContentChanged to " + workbench.ActiveContent); }; workbench.ActiveViewContentChanged += delegate { LoggingService.Debug("ActiveViewContentChanged to " + workbench.ActiveViewContent); }; workbench.ActiveWorkbenchWindowChanged += delegate { LoggingService.Debug("ActiveWorkbenchWindowChanged to " + workbench.ActiveWorkbenchWindow); }; }
public override bool CanCreateContentForUri(string fileName) { if (excludeThis) { return(false); } if (GetWindow(fileName) == null) { return(false); } excludeThis = true; var db = DisplayBindingService.GetDefaultBindingForUri(fileName); excludeThis = false; return(db != null); }
protected override void Run() { foreach (var view in IdeApp.Workbench.Documents) { if (view.GetContent <AssemblyBrowserViewContent> () != null) { view.Window.SelectWindow(); return; } } var binding = DisplayBindingService.GetBindings <AssemblyBrowserDisplayBinding> ().FirstOrDefault(); var assemblyBrowserView = binding != null?binding.GetViewContent() : new AssemblyBrowserViewContent(); if (Ide.IdeApp.ProjectOperations.CurrentSelectedSolution == null) { foreach (var assembly in defaultAssemblies) { assemblyBrowserView.Widget.AddReferenceByAssemblyName(assembly, assembly == defaultAssemblies [0]); } } else { foreach (var project in Ide.IdeApp.ProjectOperations.CurrentSelectedSolution.GetAllProjects()) { assemblyBrowserView.Widget.AddProject(project, false); var netProject = project as DotNetProject; if (netProject == null) { continue; } foreach (string file in netProject.GetReferencedAssemblies(ConfigurationSelector.Default, false)) { if (!File.Exists(file)) { continue; } assemblyBrowserView.Widget.AddReferenceByFileName(file, false); } } } Ide.IdeApp.Workbench.OpenDocument(assemblyBrowserView, true); }