public GotoLineNumberWidget (SourceEditorWidget widget, Widget container) { this.container = container; this.Build (); this.widget = widget; StoreWidgetState (); widget.TextEditorContainer.SizeAllocated += HandleViewTextEditorhandleSizeAllocated; //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 [] { eventbox1, eventbox2 }) { eb.VisibleWindow = true; eb.ModifyBg (StateType.Normal, new Gdk.Color (230, 230, 230)); } } this.closeButton.Clicked += delegate { RestoreWidgetState (); widget.RemoveSearchWidget (); }; this.buttonGoToLine.Clicked += delegate { cleanExit = true; GotoLine (); widget.RemoveSearchWidget (); }; foreach (Gtk.Widget child in this.Children) { child.KeyPressEvent += delegate (object sender, Gtk.KeyPressEventArgs args) { if (args.Event.Key == Gdk.Key.Escape) { RestoreWidgetState (); widget.RemoveSearchWidget (); } }; } Gtk.Widget oldWidget = null; this.FocusChildSet += delegate (object sender, Gtk.FocusChildSetArgs args) { // only store state when the focus comes from a non child widget if (args.Widget != null && oldWidget == null) StoreWidgetState (); oldWidget = args.Widget; }; this.entryLineNumber.Changed += delegate { PreviewLine (); }; this.entryLineNumber.Activated += delegate { cleanExit = true; GotoLine (); widget.RemoveSearchWidget (); }; }
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"); }