5
// Lluis Sanchez <lluis@xamarin.com>
6
// Konrad Kruczyński <kkruczynski@antmicro.com>
8
// Copyright (c) 2011 Xamarin Inc
10
// Permission is hereby granted, free of charge, to any person obtaining a copy
11
// of this software and associated documentation files (the "Software"), to deal
12
// in the Software without restriction, including without limitation the rights
13
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
// copies of the Software, and to permit persons to whom the Software is
15
// furnished to do so, subject to the following conditions:
17
// The above copyright notice and this permission notice shall be included in
18
// all copies or substantial portions of the Software.
20
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
31
namespace Xwt.GtkBackend
33
public class WindowBackend: WindowFrameBackend, IWindowBackend
35
Gtk.Alignment alignment;
39
public override void Initialize ()
41
Window = new Gtk.Window ("");
42
Window.Add (CreateMainLayout ());
45
protected virtual Gtk.Widget CreateMainLayout ()
47
mainBox = new Gtk.VBox ();
49
alignment = new Gtk.Alignment (0, 0, 1, 1);
50
mainBox.PackStart (alignment, true, true, 0);
55
public Gtk.VBox MainBox {
56
get { return mainBox; }
59
public override Size ImplicitMinSize {
61
var req = Window.Child == null ? new Gtk.Requisition () : Window.Child.SizeRequest ();
62
var creq = mainBox.SizeRequest ();
63
return new Size (req.Width - creq.Width, req.Height - creq.Height);
67
public void SetChild (IWidgetBackend child)
69
var w = (IGtkWidgetBackend) child;
70
if (alignment.Child != null)
71
alignment.Remove (alignment.Child);
72
alignment.Child = w.Widget;
75
public void SetMainMenu (IMenuBackend menu)
78
mainBox.Remove (mainMenu);
81
MenuBackend m = (MenuBackend) menu;
83
mainBox.PackStart (mainMenu, false, false, 0);
84
((Gtk.Box.BoxChild)mainBox[mainMenu]).Position = 0;
89
public void SetPadding (double left, double top, double right, double bottom)
91
alignment.LeftPadding = (uint) left;
92
alignment.RightPadding = (uint) right;
93
alignment.TopPadding = (uint) top;
94
alignment.BottomPadding = (uint) bottom;
97
public void SetMinSize (Size s)