Exemple #1
0
        public static void ShowIfValid(Document document, MonoDevelop.Ide.CodeCompletion.CodeCompletionContext completionContext)
        {
            var options = CodeGenerationOptions.CreateCodeGenerationOptions(document);

            var validGenerators = new List <ICodeGenerator> ();

            foreach (var generator in CodeGenerationService.CodeGenerators)
            {
                if (generator.IsValid(options))
                {
                    validGenerators.Add(generator);
                }
            }
            if (validGenerators.Count < 1)
            {
                return;
            }

            var window = new GenerateCodeWindow(options, completionContext);

            window.Populate(validGenerators);
        }
Exemple #2
0
        GenerateCodeWindow(CodeGenerationOptions options, MonoDevelop.Ide.CodeCompletion.CodeCompletionContext completionContext) : base(Gtk.WindowType.Toplevel)
        {
            this.options = options;
            this.Build();
            scrolledwindow1.Child = treeviewGenerateActions;
            scrolledwindow1.ShowAll();

            scrolledwindow2.Child = treeviewSelection;
            scrolledwindow2.ShowAll();

            treeviewGenerateActions.Cancel += delegate {
                Destroy();
            };
            treeviewGenerateActions.Submit += delegate {
                treeviewSelection.GrabFocus();
            };

            treeviewSelection.Cancel += delegate {
                treeviewGenerateActions.GrabFocus();
            };

            treeviewSelection.Submit += delegate {
                if (curInitializeObject != null)
                {
                    curInitializeObject.GenerateCode();
                    curInitializeObject = null;
                }
                Destroy();
            };

            WindowTransparencyDecorator.Attach(this);

            treeviewSelection.HeadersVisible = false;

            treeviewGenerateActions.HeadersVisible = false;
            treeviewGenerateActions.Model          = generateActionsStore;
            TreeViewColumn column         = new TreeViewColumn();
            var            pixbufRenderer = new CellRendererImage();

            column.PackStart(pixbufRenderer, false);
            column.AddAttribute(pixbufRenderer, "image", 0);

            CellRendererText textRenderer = new CellRendererText();

            column.PackStart(textRenderer, true);
            column.AddAttribute(textRenderer, "text", 1);
            column.Expand = true;
            treeviewGenerateActions.AppendColumn(column);

            treeviewGenerateActions.Selection.Changed += TreeviewGenerateActionsSelectionChanged;
            this.Remove(this.vbox1);
            BorderBox messageArea = new BorderBox();

            messageArea.Add(vbox1);
            this.Add(messageArea);
            this.ShowAll();

            int x = completionContext.TriggerXCoord;
            int y = completionContext.TriggerYCoord;

            int w, h;

            GetSize(out w, out h);

            int myMonitor = Screen.GetMonitorAtPoint(x, y);

            Gdk.Rectangle geometry = DesktopService.GetUsableMonitorGeometry(Screen, myMonitor);

            if (x + w > geometry.Right)
            {
                x = geometry.Right - w;
            }

            if (y + h > geometry.Bottom)
            {
                y = y - completionContext.TriggerTextHeight - h;
            }

            Move(x, y);
        }