internal MonoDevelopStatusBar() { BorderWidth = 0; Spacing = 0; HasResizeGrip = true; HeaderBox hb = new HeaderBox(1, 0, 0, 0); hb.BorderColor = Styles.DockSeparatorColor; var mainBox = new HBox(); mainBox.PackStart(new Label(""), true, true, 0); hb.Add(mainBox); hb.ShowAll(); PackStart(hb, true, true, 0); // Feedback button if (FeedbackService.Enabled) { CustomFrame fr = new CustomFrame(0, 0, 1, 1); Gdk.Pixbuf px = Gdk.Pixbuf.LoadFromResource("balloon.png"); HBox b = new HBox(false, 3); b.PackStart(new Gtk.Image(px)); b.PackStart(new Gtk.Label("Feedback")); Gtk.Alignment al = new Gtk.Alignment(0f, 0f, 1f, 1f); al.RightPadding = 5; al.LeftPadding = 3; al.Add(b); feedbackButton = new MiniButton(al); //feedbackButton.BackroundColor = new Gdk.Color (200, 200, 255); fr.Add(feedbackButton); mainBox.PackStart(fr, false, false, 0); feedbackButton.Clicked += HandleFeedbackButtonClicked; feedbackButton.ButtonPressEvent += HandleFeedbackButtonButtonPressEvent; ; feedbackButton.ClickOnRelease = true; FeedbackService.FeedbackPositionGetter = delegate { int x, y; feedbackButton.GdkWindow.GetOrigin(out x, out y); x += feedbackButton.Allocation.Width; y -= 6; return(new Gdk.Point(x, y)); }; } // Dock area DefaultWorkbench wb = (DefaultWorkbench)IdeApp.Workbench.RootWindow; var dockBar = wb.DockFrame.ExtractDockBar(PositionType.Bottom); dockBar.AlignToEnd = true; dockBar.ShowBorder = false; dockBar.NoShowAll = true; mainBox.PackStart(dockBar, false, false, 0); // Resize grip resizeGrip.WidthRequest = ResizeGripWidth; resizeGrip.HeightRequest = 0; mainBox.PackStart(resizeGrip, false, false, 0); // Status panels statusBox = new HBox(false, 0); statusBox.BorderWidth = 0; statusLabel.SetAlignment(0, 0.5f); statusLabel.Wrap = false; int w, h; Gtk.Icon.SizeLookup(IconSize.Menu, out w, out h); statusLabel.HeightRequest = h; statusLabel.SetPadding(0, 0); statusLabel.ShowAll(); messageBox.PackStart(statusLabel, true, true, 0); var eventCaretBox = new EventBox(); var caretStatusBox = new HBox(); modeLabel = new Label(" "); caretStatusBox.PackEnd(modeLabel, false, false, 8); cursorLabel = new CaretStatusLabel(" "); caretStatusBox.PackEnd(cursorLabel, false, false, 0); caretStatusBox.GetSizeRequest(out w, out h); caretStatusBox.WidthRequest = w; caretStatusBox.HeightRequest = h; eventCaretBox.Add(caretStatusBox); statusBox.PackEnd(eventCaretBox, false, false, 0); this.ShowAll(); // // todo: Move this to the CompletionWindowManager when it's possible. // StatusBarContext completionStatus = null; // CompletionWindowManager.WindowShown += delegate { // CompletionListWindow wnd = CompletionWindowManager.Wnd; // if (wnd != null && wnd.List != null && wnd.List.CategoryCount > 1) { // if (completionStatus == null) // completionStatus = CreateContext (); // completionStatus.ShowMessage (string.Format (GettextCatalog.GetString ("To toggle categorized completion mode press {0}."), IdeApp.CommandService.GetCommandInfo (Commands.TextEditorCommands.ShowCompletionWindow).AccelKey)); // } // }; }
internal MonoDevelopStatusBar() { mainContext = new MainStatusBarContextImpl(this); activeContext = mainContext; contexts.Add(mainContext); Frame originalFrame = (Frame)Children [0]; // originalFrame.WidthRequest = 8; // originalFrame.Shadow = ShadowType.In; // originalFrame.BorderWidth = 0; BorderWidth = 0; Spacing = 0; // Feedback button if (FeedbackService.Enabled) { CustomFrame fr = new CustomFrame(0, 0, 1, 1); Gdk.Pixbuf px = Gdk.Pixbuf.LoadFromResource("balloon.png"); HBox b = new HBox(false, 3); b.PackStart(new Gtk.Image(px)); b.PackStart(new Gtk.Label("Feedback")); Gtk.Alignment al = new Gtk.Alignment(0f, 0f, 1f, 1f); al.RightPadding = 5; al.LeftPadding = 3; al.Add(b); feedbackButton = new MiniButton(al); //feedbackButton.BackroundColor = new Gdk.Color (200, 200, 255); fr.Add(feedbackButton); PackStart(fr, false, false, 0); feedbackButton.Clicked += HandleFeedbackButtonClicked; feedbackButton.ButtonPressEvent += HandleFeedbackButtonButtonPressEvent; ; feedbackButton.ClickOnRelease = true; FeedbackService.FeedbackPositionGetter = delegate { int x, y; feedbackButton.GdkWindow.GetOrigin(out x, out y); x += feedbackButton.Allocation.Width; y -= 6; return(new Gdk.Point(x, y)); }; } // Dock area DefaultWorkbench wb = (DefaultWorkbench)IdeApp.Workbench.RootWindow; wb.DockFrame.ShadedContainer.Add(this); Gtk.Widget dockBar = wb.DockFrame.ExtractDockBar(PositionType.Bottom); dockBar.NoShowAll = true; PackStart(dockBar, false, false, 0); // Status panels progressBar = new ProgressBar(); progressBar.PulseStep = 0.1; progressBar.SizeRequest(); progressBar.HeightRequest = 1; statusBox = new HBox(false, 0); statusBox.BorderWidth = 0; statusLabel = new Label(); statusLabel.SetAlignment(0, 0.5f); statusLabel.Wrap = false; int w, h; Gtk.Icon.SizeLookup(IconSize.Menu, out w, out h); statusLabel.HeightRequest = h; statusLabel.SetPadding(0, 0); EventBox eventMessageBox = new EventBox(); messageBox = new HBox(); messageBox.PackStart(progressBar, false, false, 0); messageBox.PackStart(statusLabel, true, true, 0); eventMessageBox.Add(messageBox); statusBox.PackStart(eventMessageBox, true, true, 0); eventMessageBox.ButtonPressEvent += HandleEventMessageBoxButtonPressEvent; textStatusBarPanel.BorderWidth = 0; textStatusBarPanel.ShadowType = ShadowType.None; textStatusBarPanel.Add(statusBox); var eventCaretBox = new EventBox(); var caretStatusBox = new HBox(); modeLabel = new Label(" "); caretStatusBox.PackEnd(modeLabel, false, false, 8); cursorLabel = new CaretStatusLabel(" "); caretStatusBox.PackEnd(cursorLabel, false, false, 0); caretStatusBox.GetSizeRequest(out w, out h); caretStatusBox.WidthRequest = w; caretStatusBox.HeightRequest = h; eventCaretBox.Add(caretStatusBox); statusBox.PackEnd(eventCaretBox, false, false, 0); statusIconBox = new HBox(); statusIconBox.BorderWidth = 0; statusIconBox.Spacing = 3; statusBox.PackEnd(statusIconBox, false, false, 4); this.PackStart(textStatusBarPanel, true, true, 0); ShowReady(); Gtk.Box.BoxChild boxChild = (Gtk.Box.BoxChild) this[textStatusBarPanel]; boxChild.Position = 0; boxChild.Expand = boxChild.Fill = true; // boxChild = (Gtk.Box.BoxChild)this[originalFrame]; // boxChild.Padding = 0; // boxChild.Expand = boxChild.Fill = false; this.progressBar.Fraction = 0.0; this.ShowAll(); statusIconBox.HideAll(); originalFrame.HideAll(); progressBar.Visible = false; StatusBarContext completionStatus = null; // todo: Move this to the CompletionWindowManager when it's possible. CompletionWindowManager.WindowShown += delegate { CompletionListWindow wnd = CompletionWindowManager.Wnd; if (wnd != null && wnd.List != null && wnd.List.CategoryCount > 1) { if (completionStatus == null) { completionStatus = CreateContext(); } completionStatus.ShowMessage(string.Format(GettextCatalog.GetString("To toggle categorized completion mode press {0}."), IdeApp.CommandService.GetCommandInfo(Commands.TextEditorCommands.ShowCompletionWindow).AccelKey)); } }; CompletionWindowManager.WindowClosed += delegate { if (completionStatus != null) { completionStatus.Dispose(); completionStatus = null; } }; }