Beispiel #1
0
        public void UpdateSearchPattern()
        {
            searchEntry.Entry.Text = widget.TextEditor.SearchPattern;
            widget.SetSearchPattern(widget.TextEditor.SearchPattern);
            searchPattern = widget.TextEditor.SearchPattern;
//			UpdateSearchEntry ();
        }
Beispiel #2
0
        public SearchAndReplaceWidget(SourceEditorWidget widget, Widget container)
        {
            this.container = container;
            widget.TextEditorContainer.SizeAllocated += HandleViewTextEditorhandleSizeAllocated;
            widget.TextEditor.TextViewMargin.SearchRegionsUpdated += HandleWidgetTextEditorTextViewMarginSearchRegionsUpdated;
            widget.TextEditor.Caret.PositionChanged += HandleWidgetTextEditorCaretPositionChanged;
            this.SizeAllocated += HandleViewTextEditorhandleSizeAllocated;
            this.Name           = "SearchAndReplaceWidget";
            this.Events         = Gdk.EventMask.AllEventsMask;
            widget.DisableAutomaticSearchPatternCaseMatch = false;
            Build();
            this.buttonReplace.TooltipText        = GettextCatalog.GetString("Replace");
            this.buttonSearchForward.TooltipText  = GettextCatalog.GetString("Find next");
            this.buttonSearchBackward.TooltipText = GettextCatalog.GetString("Find previous");
            this.buttonSearchMode.TooltipText     = GettextCatalog.GetString("Toggle between search and replace mode");
            this.searchEntry.Ready                    = true;
            this.searchEntry.Visible                  = true;
            this.searchEntry.WidthRequest             = widget.Vbox.Allocation.Width / 3;
            this.searchEntry.ForceFilterButtonVisible = true;
            replaceWidgets = new Widget [] {
                //		labelReplace,
                entryReplace,
                buttonReplace,
                buttonReplaceAll
            };

            this.FocusChain = new Widget [] {
                this.searchEntry,
                this.buttonSearchForward,
                this.buttonSearchBackward,
                entryReplace,
                buttonReplace,
                buttonReplaceAll
            };

            this.widget = widget;
            FilterHistory(seachHistoryProperty);
            FilterHistory(replaceHistoryProperty);
            //HACK: GTK rendering issue on Mac, images don't repaint unless we put them in visible eventboxes
            if (Platform.IsMac)
            {
                foreach (var eb in new [] { eventbox2, eventbox3, eventbox4, eventbox5, eventbox6 })
                {
                    eb.VisibleWindow = true;
                    eb.ModifyBg(StateType.Normal, new Gdk.Color(230, 230, 230));
                }
            }

            if (String.IsNullOrEmpty(widget.TextEditor.SearchPattern))
            {
                widget.TextEditor.SearchPattern = searchPattern;
            }
            else if (widget.TextEditor.SearchPattern != searchPattern)
            {
                searchPattern = widget.TextEditor.SearchPattern;
                //FireSearchPatternChanged ();
            }
            UpdateSearchPattern();

            //searchEntry.Model = searchHistory;

            searchEntry.Entry.KeyReleaseEvent += delegate {
                widget.CheckSearchPatternCasing(SearchPattern);

/*				widget.SetSearchPattern (SearchPattern);
 *                              searchPattern = SearchPattern;
 *                              UpdateSearchEntry ();*/
            };

            searchEntry.Entry.Changed += delegate {
                widget.SetSearchPattern(SearchPattern);
                string oldPattern = searchPattern;
                searchPattern = SearchPattern;
                if (oldPattern != searchPattern)
                {
                    UpdateSearchEntry();
                }
                var history = GetHistory(seachHistoryProperty);
                if (history.Count > 0 && history[0] == oldPattern)
                {
                    ChangeHistory(seachHistoryProperty, searchPattern);
                }
                else
                {
                    UpdateSearchHistory(searchPattern);
                }
            };

            entryReplace.Text = replacePattern;
//			entryReplace.Model = replaceHistory;
//			RestoreReplaceHistory ();

            foreach (Gtk.Widget child in Children)
            {
                child.KeyPressEvent += delegate(object sender, Gtk.KeyPressEventArgs args) {
                    if (args.Event.Key == Gdk.Key.Escape)
                    {
                        widget.RemoveSearchWidget();
                    }
                };
            }

            closeButton.Clicked += delegate {
                widget.RemoveSearchWidget();
            };

            buttonSearchMode.Clicked += delegate {
                IsReplaceMode = !IsReplaceMode;
            };

            // comboboxSearchAs.AppendText (GettextCatalog.GetString ("Text"));
            // comboboxSearchAs.AppendText (GettextCatalog.GetString ("Regular Expressions"));
            // comboboxSearchAs.Active = 0;
            // ReplacePatternChanged += UpdateReplacePattern;

            //SearchPatternChanged += UpdateSearchPattern;
            FocusChildSet += delegate {
                StoreWidgetState();
            };

            searchEntry.Entry.Activated += delegate {
                UpdateSearchHistory(SearchPattern);
                widget.FindNext(false);
            };

            buttonSearchForward.Clicked += delegate {
                UpdateSearchHistory(SearchPattern);
                widget.FindNext(false);
            };

            buttonSearchBackward.Clicked += delegate {
                UpdateSearchHistory(SearchPattern);
                widget.FindPrevious(false);
            };

//			optionsButton.Label = MonoDevelop.Core.GettextCatalog.GetString ("Options");

            this.searchEntry.RequestMenu += HandleSearchEntryhandleRequestMenu;

            entryReplace.Changed += delegate {
                replacePattern = ReplacePattern;
                if (!inReplaceUpdate)
                {
                    FireReplacePatternChanged();
                }
            };

            entryReplace.Activated += delegate {
                UpdateSearchHistory(SearchPattern);
                UpdateReplaceHistory(ReplacePattern);
                widget.Replace();
                entryReplace.GrabFocus();
            };

            buttonReplace.Clicked += delegate {
                UpdateSearchHistory(SearchPattern);
                UpdateReplaceHistory(ReplacePattern);
                widget.Replace();
            };

            buttonReplaceAll.Clicked += delegate {
                UpdateSearchHistory(SearchPattern);
                UpdateReplaceHistory(ReplacePattern);
                widget.ReplaceAll();
            };

            buttonSearchForward.KeyPressEvent  += OnNavigateKeyPressEvent;
            buttonSearchBackward.KeyPressEvent += OnNavigateKeyPressEvent;
            searchEntry.Entry.KeyPressEvent    += OnNavigateKeyPressEvent;
            entryReplace.KeyPressEvent         += OnNavigateKeyPressEvent;
            buttonReplace.KeyPressEvent        += OnNavigateKeyPressEvent;
            buttonReplaceAll.KeyPressEvent     += OnNavigateKeyPressEvent;

            resultInformLabelEventBox             = this.searchEntry.AddLabelWidget(resultInformLabel);
            resultInformLabelEventBox.BorderWidth = 2;
            resultInformLabel.Xpad = 2;
            resultInformLabel.Show();
            searchEntry.FilterButtonPixbuf = new Gdk.Pixbuf(typeof(SearchAndReplaceWidget).Assembly, "searchoptions.png");
        }