Exemplo n.º 1
0
  public NotifyWindow(Gtk.Widget parent, string message, string details,
 Gtk.MessageType messageType, uint timeout)
      : base(Gtk.WindowType.Popup)
  {
      this.AppPaintable = true;
         parentWidget = parent;
         this.timeout = timeout;
         activeBackgroundColor = new Gdk.Color(249, 253, 202);
         inactiveBackgroundColor = new Gdk.Color(255, 255, 255);
         Gtk.HBox outBox = new HBox();
         this.Add(outBox);
         outBox.BorderWidth = (uint)wbsize;
         Gtk.VBox closeBox = new VBox();
         closeBox.BorderWidth = 3;
         outBox.PackEnd(closeBox, true, true, 0);
         EventBox eBox = new EventBox();
         eBox.ButtonPressEvent +=
      new ButtonPressEventHandler(OnCloseEvent);
         Gtk.Image closeImg = new Gtk.Image();
         closeImg.SetFromStock(Gtk.Stock.Close,
         IconSize.Menu);
         eBox.Add(closeImg);
         closeBox.PackStart(eBox, false, false, 0);
         Label padder = new Label("");
         outBox.PackStart(padder, false, false, 5);
         Gtk.VBox vbox = new VBox();
         outBox.PackStart(vbox, true, true, 0);
         vbox.BorderWidth = 10;
         Gtk.HBox hbox = new HBox();
         hbox.Spacing = 5;
         vbox.PackStart(hbox, false, false, 0);
         VBox iconVBox = new VBox();
         hbox.PackStart(iconVBox, false, false, 0);
         Gtk.Image msgImage = new Gtk.Image();
         switch(messageType)
         {
      case Gtk.MessageType.Info:
       msgImage.SetFromStock(Gtk.Stock.DialogInfo,
         IconSize.Button);
       break;
      case Gtk.MessageType.Warning:
       msgImage.SetFromStock(Gtk.Stock.DialogWarning,
         IconSize.Button);
       break;
      case Gtk.MessageType.Question:
       msgImage.SetFromStock(Gtk.Stock.DialogQuestion,
         IconSize.Button);
       break;
      case Gtk.MessageType.Error:
       msgImage.SetFromStock(Gtk.Stock.DialogError,
         IconSize.Button);
       break;
         }
         iconVBox.PackStart(msgImage, false, false, 0);
         VBox messageVBox = new VBox();
         hbox.PackStart(messageVBox, true, true, 0);
         Label l = new Label();
         l.Markup = "<span size=\"small\" weight=\"bold\">" + message + "</span>";
         l.LineWrap = false;
         l.UseMarkup = true;
         l.Selectable = false;
         l.Xalign = 0;
         l.Yalign = 0;
         l.LineWrap = true;
         l.Wrap = true;
         l.WidthRequest = messageTextWidth;
         messageVBox.PackStart(l, false, true, 0);
         detailsTextView = new LinkTextView(details);
         detailsTextView.Editable = false;
         detailsTextView.CursorVisible = false;
         detailsTextView.WrapMode = WrapMode.Word;
         detailsTextView.SizeAllocate(new Gdk.Rectangle(0, 0, messageTextWidth, 600));
         detailsTextView.LinkClicked +=
      new LinkClickedEventHandler(OnLinkClicked);
         messageVBox.PackStart(detailsTextView, false, false, 3);
         Label spacer = new Label();
         spacer.UseMarkup = true;
         spacer.Markup = "<span size=\"xx-small\"> </span>";
         messageVBox.PackEnd(spacer, false, false, 0);
         closeWindowTimeoutID = 0;
  }
Exemplo n.º 2
0
        ///
        /// details: The details of the notification.  Links can be sepecified
        /// using anchor tags similar to those found in HTML.  Each link will
        /// be underlined and made blue.  When users click on the link, they
        /// will cause the LinkClicked event to fire.  An example details
        /// string with links would be:
        ///
        ///		Click <a href="MyLinkID">here</a> to open a new window.
        ///
        /// Multiple links may be specified.
        ///
        /// timeout: Specify the number of milliseconds to leave the popup on
        /// the screen.  Set to 0 to leave on the screen until the user closes
        /// it or the code which launched the window hides and destroys it.
        ///
        public NotifyWindow(Gtk.Widget parent, string message, string details,
                            Gtk.MessageType messageType, uint timeout)
            : base(Gtk.WindowType.Popup)
        {
            this.AppPaintable = true;
            parentWidget      = parent;
            this.timeout      = timeout;

            activeBackgroundColor   = new Gdk.Color(249, 253, 202);
            inactiveBackgroundColor = new Gdk.Color(255, 255, 255);

            Gtk.HBox outBox = new HBox();
            this.Add(outBox);
            outBox.BorderWidth = (uint)wbsize;

            Gtk.VBox closeBox = new VBox();
            closeBox.BorderWidth = 3;
            outBox.PackEnd(closeBox, true, true, 0);
            EventBox eBox = new EventBox();

            eBox.ButtonPressEvent +=
                new ButtonPressEventHandler(OnCloseEvent);
            Gtk.Image closeImg = new Gtk.Image();
            closeImg.SetFromStock(Gtk.Stock.Close,
                                  IconSize.Menu);
            eBox.Add(closeImg);
            closeBox.PackStart(eBox, false, false, 0);

            Label padder = new Label("");

            outBox.PackStart(padder, false, false, 5);

            Gtk.VBox vbox = new VBox();
            outBox.PackStart(vbox, true, true, 0);
            vbox.BorderWidth = 10;

            Gtk.HBox hbox = new HBox();
            hbox.Spacing = 5;
            vbox.PackStart(hbox, false, false, 0);

            VBox iconVBox = new VBox();

            hbox.PackStart(iconVBox, false, false, 0);

            Gtk.Image msgImage = new Gtk.Image();
            switch (messageType)
            {
            case Gtk.MessageType.Info:
                msgImage.SetFromStock(Gtk.Stock.DialogInfo,
                                      IconSize.Button);
                break;

            case Gtk.MessageType.Warning:
                msgImage.SetFromStock(Gtk.Stock.DialogWarning,
                                      IconSize.Button);
                break;

            case Gtk.MessageType.Question:
                msgImage.SetFromStock(Gtk.Stock.DialogQuestion,
                                      IconSize.Button);
                break;

            case Gtk.MessageType.Error:
                msgImage.SetFromStock(Gtk.Stock.DialogError,
                                      IconSize.Button);
                break;
            }

//			hbox.PackStart(msgImage, false, true, 0);
            iconVBox.PackStart(msgImage, false, false, 0);
//			vbox.Spacing = 5;
            // Fix for Bug #116812: iFolders w/ underscore characters are not
            // displayed correctly in bubble.
            // If we put the text in the constructor of the Label widget,
            // the markup is parsed to look for mnemonics.  If we just set
            // the Markup property later, the underscore character is
            // interpreted correctly.

            VBox messageVBox = new VBox();

            hbox.PackStart(messageVBox, true, true, 0);

            Label l = new Label();

            l.Markup       = "<span size=\"small\" weight=\"bold\">" + GLib.Markup.EscapeText(message) + "</span>";
            l.LineWrap     = false;
            l.UseMarkup    = true;
            l.Selectable   = false;
            l.Xalign       = 0;
            l.Yalign       = 0;
            l.LineWrap     = true;
            l.Wrap         = true;
            l.WidthRequest = messageTextWidth;
            messageVBox.PackStart(l, false, true, 0);

            detailsTextView = new LinkTextView(details);

            detailsTextView.Editable      = false;
            detailsTextView.CursorVisible = false;
            detailsTextView.WrapMode      = WrapMode.Word;

            // Determine how tall to make the TextView by allocating a random
            // height.  This will allow us to see the "optimal" height so that
            // all the text will be displayed without having to make the user
            // scroll through the details of the message.
            detailsTextView.SizeAllocate(new Gdk.Rectangle(0, 0, messageTextWidth, 600));

            detailsTextView.LinkClicked +=
                new LinkClickedEventHandler(OnLinkClicked);
            messageVBox.PackStart(detailsTextView, false, false, 3);

            // This spacer has to be here to make sure that the bottom of the
            // detailsTextView does not get chopped off.  I'm not sure why,
            // it's just another one of those crazy things we do.
            Label spacer = new Label();

            spacer.UseMarkup = true;
            spacer.Markup    = "<span size=\"xx-small\"> </span>";
            messageVBox.PackEnd(spacer, false, false, 0);

            closeWindowTimeoutID = 0;
        }