Esempio n. 1
0
        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);
        }
Esempio n. 4
0
		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);
            }
        }
Esempio n. 6
0
		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);
		}
Esempio n. 7
0
        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);
            }
        }
Esempio n. 9
0
        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();
                }
            }
        }
Esempio n. 10
0
        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);
                    }
                }
            }
        }
Esempio n. 12
0
        public override bool HasChildNodes(ITreeBuilder builder, object dataObject)
        {
            GuiBuilderWindow win = (GuiBuilderWindow)dataObject;

            return(win.RootWidget.ActionGroups.GetEnumerator().MoveNext());
        }
Esempio n. 13
0
        public override void BuildChildNodes(ITreeBuilder builder, object dataObject)
        {
            GuiBuilderWindow win = (GuiBuilderWindow)dataObject;

            builder.AddChildren(win.RootWidget.ActionGroups);
        }
Esempio n. 14
0
        public override string GetNodeName(ITreeNavigator thisNode, object dataObject)
        {
            GuiBuilderWindow win = (GuiBuilderWindow)dataObject;

            return(win.Name);
        }
Esempio n. 15
0
		public WindowEventArgs (GuiBuilderWindow win)
		{
			this.win = win;
		}
Esempio n. 16
0
		public void Remove (GuiBuilderWindow win)
		{
			gproject.RemoveComponent (win.RootWidget);
			UnregisterWindow (win);
		}
Esempio n. 17
0
		void UnregisterWindow (GuiBuilderWindow win)
		{
			if (!formInfos.Contains (win))
				return;

			formInfos.Remove (win);

			if (WindowRemoved != null)
				WindowRemoved (this, new WindowEventArgs (win));

			win.Dispose ();
			NotifyChanged ();
		}
Esempio n. 18
0
		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 ();
				}
			}
		}
Esempio n. 19
0
        public override void OnNodeRemoved(object dataObject)
        {
            GuiBuilderWindow win = (GuiBuilderWindow)dataObject;

            win.Changed -= onChanged;
        }
Esempio n. 20
0
		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;
		}