public static GtkComponentType GetComponentType(this ProjectFile pf) { GtkDesignInfo info = GtkDesignInfo.FromProject(pf.Project); ParsedDocument doc = ProjectDomService.GetParsedDocument(ProjectDomService.GetProjectDom(pf.Project), pf.Name); //ParsedDocument doc = ProjectDomService.ParseFile (ProjectDomService.GetProjectDom (pf.Project), pf.FilePath.ToString ()); if (doc != null && doc.CompilationUnit != null) { foreach (IType t in doc.CompilationUnit.Types) { string className = t.FullName; if (className != null) { GuiBuilderWindow win = info.GuiBuilderProject.GetWindowForClass(className); if (win != null) { return(win.RootWidget.IsWindow ? GtkComponentType.Dialog : GtkComponentType.Widget); } Stetic.ActionGroupInfo action = info.GuiBuilderProject.GetActionGroup(className); if (action != null) { return(GtkComponentType.ActionGroup); } } } } if (pf.Name.Contains("IconFactory.gtkx")) { return(GtkComponentType.IconFactory); } return(GtkComponentType.None); }
public override async void ActivateItem() { GuiBuilderWindow w = (GuiBuilderWindow)CurrentNode.GetParentDataItem(typeof(GuiBuilderWindow), false); if (w != null) { if (w.SourceCodeFile == FilePath.Null && !w.BindToClass()) { return; } Document doc = await IdeApp.Workbench.OpenDocument(w.SourceCodeFile, null, true); if (doc != null) { GuiBuilderView view = doc.GetContent <GuiBuilderView> (); if (view != null) { view.ShowActionDesignerView(((Stetic.ActionGroupInfo)CurrentNode.DataItem).Name); } } } else { Project project = (Project)CurrentNode.GetParentDataItem(typeof(Project), false); Stetic.ActionGroupInfo group = (Stetic.ActionGroupInfo)CurrentNode.DataItem; await GuiBuilderService.OpenActionGroup(project, group); } }
public override bool CanDeleteItem() { // Don't allow deleting action groups local to a window GuiBuilderWindow w = (GuiBuilderWindow)CurrentNode.GetParentDataItem(typeof(GuiBuilderWindow), false); return(w == null); }
void AttachWindow (GuiBuilderWindow window) { gproject = window.Project; GtkDesignInfo info = GtkDesignInfo.FromProject (gproject.Project); /*gproject.SteticProject.ImagesRootPath = FileService.AbsoluteToRelativePath (info.GtkGuiFolder, gproject.Project.BaseDirectory); gproject.UpdateLibraries (); */LoadDesigner (); }
public override void BuildChildNodes(ITreeBuilder builder, object dataObject) { GuiBuilderWindow win = (GuiBuilderWindow)dataObject; foreach (Stetic.ActionGroupInfo agroup in win.RootWidget.ActionGroups) { builder.AddChild(agroup); } }
public GuiBuilderView (IViewContent content, GuiBuilderWindow window): base (content) { rootName = window.Name; designerPage = new DesignerPage (window.Project); designerPage.Show (); AddButton (GettextCatalog.GetString ("Designer"), designerPage); /* actionsPage = new ActionGroupPage (); actionsPage.Show (); */ AttachWindow (window); }
public override void BuildNode(ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo) { GuiBuilderWindow win = (GuiBuilderWindow)dataObject; nodeInfo.Label = win.Name; // if (win.RootWidget.IsWindow) // icon = ImageService.GetPixbuf ("md-gtkcore-window"); if (win.RootWidget.IsWindow) { nodeInfo.Icon = Context.GetIcon("md-gtkcore-dialog"); } else { nodeInfo.Icon = Context.GetIcon("md-gtkcore-widget"); } }
public override void BuildNode(ITreeBuilder treeBuilder, object dataObject, ref string label, ref Gdk.Pixbuf icon, ref Gdk.Pixbuf closedIcon) { GuiBuilderWindow win = (GuiBuilderWindow)dataObject; label = win.Name; // if (win.RootWidget.IsWindow) // icon = ImageService.GetPixbuf ("md-gtkcore-window"); if (win.RootWidget.IsWindow) { icon = ImageService.GetPixbuf("md-gtkcore-dialog", Gtk.IconSize.Menu); } else { icon = ImageService.GetPixbuf("md-gtkcore-widget", Gtk.IconSize.Menu); } }
public override async void ActivateItem() { GuiBuilderWindow w = (GuiBuilderWindow)CurrentNode.DataItem; if (w.SourceCodeFile == FilePath.Null && !w.BindToClass()) { return; } Document doc = await IdeApp.Workbench.OpenDocument(w.SourceCodeFile, true); if (doc != null) { GuiBuilderView view = doc.GetContent <GuiBuilderView> (); if (view != null) { view.ShowDesignerView(); } } }
public override void DeleteItem() { GuiBuilderWindow w = (GuiBuilderWindow)CurrentNode.DataItem; string fn = FileService.AbsoluteToRelativePath(w.Project.Project.BaseDirectory, w.SourceCodeFile); using (ConfirmWindowDeleteDialog dialog = new ConfirmWindowDeleteDialog(w.Name, fn, w.RootWidget)) { if (dialog.Run() == (int)Gtk.ResponseType.Yes) { if (dialog.DeleteFile) { ProjectFile file = w.Project.Project.GetProjectFile(w.SourceCodeFile); if (file != null) { w.Project.Project.Files.Remove(file); } } w.Project.Remove(w); w.Project.SaveProject(false); IdeApp.ProjectOperations.SaveAsync(w.Project.Project); } } }
public override void DeleteItem() { // Don't allow deleting action groups local to a window GuiBuilderWindow w = (GuiBuilderWindow)CurrentNode.GetParentDataItem(typeof(GuiBuilderWindow), false); if (w != null) { return; } Project project = (Project)CurrentNode.GetParentDataItem(typeof(Project), false); Stetic.ActionGroupInfo group = (Stetic.ActionGroupInfo)CurrentNode.DataItem; GuiBuilderProject gproject = GtkDesignInfo.FromProject(project).GuiBuilderProject; string sfile = gproject.GetSourceCodeFile(group); if (sfile != null) { using (ConfirmWindowDeleteDialog dialog = new ConfirmWindowDeleteDialog(group.Name, sfile, group)) { if (dialog.Run() == (int)Gtk.ResponseType.Yes) { if (dialog.DeleteFile) { ProjectFile file = project.GetProjectFile(sfile); if (file != null) { project.Files.Remove(file); } } gproject.RemoveActionGroup(group); gproject.SaveProject(false); IdeApp.ProjectOperations.Save(project); } } } }
public override bool HasChildNodes(ITreeBuilder builder, object dataObject) { GuiBuilderWindow win = (GuiBuilderWindow)dataObject; return(win.RootWidget.ActionGroups.GetEnumerator().MoveNext()); }
public override void BuildChildNodes(ITreeBuilder builder, object dataObject) { GuiBuilderWindow win = (GuiBuilderWindow)dataObject; builder.AddChildren(win.RootWidget.ActionGroups); }
public override string GetNodeName(ITreeNavigator thisNode, object dataObject) { GuiBuilderWindow win = (GuiBuilderWindow)dataObject; return(win.Name); }
public WindowEventArgs (GuiBuilderWindow win) { this.win = win; }
public void Remove (GuiBuilderWindow win) { gproject.RemoveComponent (win.RootWidget); UnregisterWindow (win); }
void UnregisterWindow (GuiBuilderWindow win) { if (!formInfos.Contains (win)) return; formInfos.Remove (win); if (WindowRemoved != null) WindowRemoved (this, new WindowEventArgs (win)); win.Dispose (); NotifyChanged (); }
void RegisterWindow (Stetic.WidgetInfo widget, bool notify) { if (formInfos != null) { foreach (GuiBuilderWindow w in formInfos) if (w.RootWidget == widget) return; GuiBuilderWindow win = new GuiBuilderWindow (this, gproject, widget); formInfos.Add (win); if (notify) { if (WindowAdded != null) WindowAdded (this, new WindowEventArgs (win)); NotifyChanged (); } } }
public override void OnNodeRemoved(object dataObject) { GuiBuilderWindow win = (GuiBuilderWindow)dataObject; win.Changed -= onChanged; }
void LoadDesigner () { this.window = gproject.GetWindow (rootName); if (window == null) { // The window doesn't exist anymore return; } gproject.Unloaded += OnDisposeProject; designer = gproject.SteticProject.CreateWidgetDesigner (window.RootWidget, false); // Designer page designerPage.ClearChild (); designerPage.Add (designer); if (designer.RootComponent == null) { // Something went wrong while creating the designer. Show it, but don't do aything else. designer.ShowAll (); return; } /* designer.AllowWidgetBinding = !gproject.Project.UsePartialTypes; codeBinder = new CodeBinder (gproject.Project, new OpenDocumentFileProvider (), designer.RootComponent); */ designer.BindField += OnBindWidgetField; designer.ModifiedChanged += OnWindowModifiedChanged; designer.SignalAdded += OnSignalAdded; designer.SignalRemoved += OnSignalRemoved; designer.SignalChanged += OnSignalChanged; designer.ComponentNameChanged += OnComponentNameChanged; designer.RootComponentChanged += OnRootComponentChanged; designer.ComponentTypesChanged += OnComponentTypesChanged; designer.ImportFileCallback = ImportFile; // Actions designer actionsBox = designer.CreateActionGroupDesigner (); //actionsBox.AllowActionBinding = !gproject.Project.UsePartialTypes; actionsBox.BindField += new EventHandler (OnBindActionField); actionsBox.ModifiedChanged += new EventHandler (OnActionshanged); /* actionsPage.ClearChild (); actionsPage.PackStart (actionsBox, true, true, 0); actionsPage.ShowAll (); if (actionsBox.HasData) { if (!HasPage (actionsPage)) AddButton (GettextCatalog.GetString ("Actions"), actionsPage); } else { RemoveButton (actionsPage); } */ designer.ShowAll (); //GuiBuilderService.SteticApp.ActiveDesigner = designer; }