internal WidgetDesignerBackend(Gtk.Container container, int designWidth, int designHeight) { ShadowType = ShadowType.None; HscrollbarPolicy = PolicyType.Automatic; VscrollbarPolicy = PolicyType.Automatic; resizableFixed = new ResizableFixed(); resizableFixed.ObjectViewer = defaultObjectViewer; wrapper = ObjectWrapper.Lookup(container); Gtk.Window window = container as Gtk.Window; if (window != null) { try { metacityPreview = CreateMetacityPreview(window); preview = metacityPreview; if (wrapper != null) { wrapper.Notify += OnWindowPropChange; } } catch { // If metacity is not available, use a regular box. EventBox eventBox = new EventBox(); eventBox.Add(container); preview = eventBox; } } else { EventBox eventBox = new EventBox(); eventBox.Add(container); preview = eventBox; } resizableFixed.Put(preview, container); if (designWidth != -1) { preview.WidthRequest = designWidth; preview.HeightRequest = designHeight; resizableFixed.AllowResize = true; } else { resizableFixed.AllowResize = false; } preview.SizeAllocated += new Gtk.SizeAllocatedHandler(OnResized); AddWithViewport(resizableFixed); if (wrapper != null) { wrapper.AttachDesigner(resizableFixed); } resizableFixed.SelectionChanged += OnSelectionChanged; }
Metacity.Preview CreateMetacityPreview(Gtk.Window window) { Metacity.Preview metacityPreview = new Metacity.Preview(); switch (window.TypeHint) { case Gdk.WindowTypeHint.Normal: metacityPreview.FrameType = Metacity.FrameType.Normal; break; case Gdk.WindowTypeHint.Dialog: metacityPreview.FrameType = window.Modal ? Metacity.FrameType.ModalDialog : Metacity.FrameType.Dialog; break; case Gdk.WindowTypeHint.Menu: metacityPreview.FrameType = Metacity.FrameType.Menu; break; case Gdk.WindowTypeHint.Splashscreen: metacityPreview.FrameType = Metacity.FrameType.Border; break; case Gdk.WindowTypeHint.Utility: metacityPreview.FrameType = Metacity.FrameType.Utility; break; default: metacityPreview.FrameType = Metacity.FrameType.Normal; break; } Metacity.FrameFlags flags = Metacity.FrameFlags.AllowsDelete | Metacity.FrameFlags.AllowsVerticalResize | Metacity.FrameFlags.AllowsHorizontalResize | Metacity.FrameFlags.AllowsMove | Metacity.FrameFlags.AllowsShade | Metacity.FrameFlags.HasFocus; if (window.Resizable) { flags = flags | Metacity.FrameFlags.AllowsMaximize; } metacityPreview.FrameFlags = flags; metacityPreview.ShowAll(); metacityPreview.Add(window); metacityPreview.Theme = GetTheme(); return(metacityPreview); }
internal WidgetDesignerBackend(Gtk.Container container, int designWidth, int designHeight) { ShadowType = ShadowType.None; HscrollbarPolicy = PolicyType.Automatic; VscrollbarPolicy = PolicyType.Automatic; resizableFixed = new ResizableFixed (); resizableFixed.ObjectViewer = defaultObjectViewer; wrapper = ObjectWrapper.Lookup (container); Gtk.Window window = container as Gtk.Window; if (window != null) { try { metacityPreview = CreateMetacityPreview (window); preview = metacityPreview; if (wrapper != null) wrapper.Notify += OnWindowPropChange; } catch { // If metacity is not available, use a regular box. EventBox eventBox = new EventBox (); eventBox.Add (container); preview = eventBox; } } else { EventBox eventBox = new EventBox (); eventBox.Add (container); preview = eventBox; } resizableFixed.Put (preview, container); if (designWidth != -1) { preview.WidthRequest = designWidth; preview.HeightRequest = designHeight; resizableFixed.AllowResize = true; } else { resizableFixed.AllowResize = false; } preview.SizeAllocated += new Gtk.SizeAllocatedHandler (OnResized); AddWithViewport (resizableFixed); if (wrapper != null) wrapper.AttachDesigner (resizableFixed); resizableFixed.SelectionChanged += OnSelectionChanged; }
Metacity.Preview CreateMetacityPreview(Gtk.Window window) { Metacity.Preview metacityPreview = new Metacity.Preview (); switch (window.TypeHint) { case Gdk.WindowTypeHint.Normal: metacityPreview.FrameType = Metacity.FrameType.Normal; break; case Gdk.WindowTypeHint.Dialog: metacityPreview.FrameType = window.Modal ? Metacity.FrameType.ModalDialog : Metacity.FrameType.Dialog; break; case Gdk.WindowTypeHint.Menu: metacityPreview.FrameType = Metacity.FrameType.Menu; break; case Gdk.WindowTypeHint.Splashscreen: metacityPreview.FrameType = Metacity.FrameType.Border; break; case Gdk.WindowTypeHint.Utility: metacityPreview.FrameType = Metacity.FrameType.Utility; break; default: metacityPreview.FrameType = Metacity.FrameType.Normal; break; } Metacity.FrameFlags flags = Metacity.FrameFlags.AllowsDelete | Metacity.FrameFlags.AllowsVerticalResize | Metacity.FrameFlags.AllowsHorizontalResize | Metacity.FrameFlags.AllowsMove | Metacity.FrameFlags.AllowsShade | Metacity.FrameFlags.HasFocus; if (window.Resizable) flags = flags | Metacity.FrameFlags.AllowsMaximize; metacityPreview.FrameFlags = flags; metacityPreview.ShowAll (); metacityPreview.Add (window); metacityPreview.Theme = GetTheme (); return metacityPreview; }