예제 #1
0
		public Canvas ()
		{
			AppPaintable = true;
			VisibleWindow = false;
			CanFocus = true;
			rootElement = new GroupCanvasElement ();
			rootElement.Canvas = this;

			AddEvents ((int)(Gdk.EventMask.AllEventsMask));
		}
		void BuildEntryGroup ()
		{
			entryGroup = new GroupCanvasElement ();

			searchEntry = new EntryCanvasElement ();
			searchEntry.SetPreEditLabel ("Type to search...");
			entryGroup.Add (searchEntry);

			replaceEntry = new EntryCanvasElement ();
			replaceEntry.SetPreEditLabel ("Replace with...");
			entryGroup.Add (replaceEntry);
			
			nextButton = new ButtonCanvasElement (new ImageCanvasElement (Gdk.Pixbuf.LoadFromResource ("go-next-ltr.png")));
			prevButton = new ButtonCanvasElement (new ImageCanvasElement (Gdk.Pixbuf.LoadFromResource ("go-previous-ltr.png")));
			PrepButton (nextButton);
			PrepButton (prevButton);
			entryGroup.Add (nextButton);
			entryGroup.Add (prevButton);
			
			replaceButton = new ButtonCanvasElement (new LabelCanvasElement ("Replace"));
			replaceAllButton = new ButtonCanvasElement (new LabelCanvasElement ("Replace All"));
			PrepButton (replaceButton);
			PrepButton (replaceAllButton);
			entryGroup.Add (replaceButton);
			entryGroup.Add (replaceAllButton);

			Add (entryGroup);
		}
		void Build ()
		{
			box = new HBoxCanvasElement ();
			
			image = new ImageCanvasElement (Gdk.Pixbuf.LoadFromResource ("searchbox-search-16.png"));
			image.WidthRequest = 24;
			image.XAlign = 0;
			image.NoChainOpacity = true;
			box.Add (image);
			
			searchLabel = new LabelCanvasElement ("Search");
			searchLabel.XAlign = 0;
			searchLabel.YAlign = 0.5;
			box.Add (searchLabel);
			
			var upDownArrows = new CanvasElement ();
			upDownArrows.WidthRequest = 12;
			upDownArrows.HeightRequest = 24;
			
			upDownArrows.RenderEvent += (sender, e) => {
				var context = e.Context;
				double centerX = upDownArrows.Width - 3;
				double centerY = upDownArrows.Height / 2;
				context.MoveTo (centerX, centerY - 6);
				context.LineTo (centerX - 3, centerY - 2);
				context.LineTo (centerX + 3, centerY - 2);
				context.ClosePath ();
				
				context.MoveTo (centerX, centerY + 6);
				context.LineTo (centerX - 3, centerY + 2);
				context.LineTo (centerX + 3, centerY + 2);
				context.ClosePath ();
				
				context.Color = new Cairo.Color (0, 0, 0, 0.35 * upDownArrows.Opacity);
				context.Fill ();
			};

			image.SizeChanged += (object sender, EventArgs e) => {
				image.AnchorX = 8;
				image.AnchorY = image.Height / 2;
			};
			
			box.Add (upDownArrows);

			SetChild (box);
		}