|
1 using System; |
|
2 using System.Collections.Generic; |
|
3 using System.Linq; |
|
4 using System.Text; |
|
5 using System.Threading; |
|
6 using System.Threading.Tasks; |
|
7 using System.Windows; |
|
8 using System.Windows.Controls; |
|
9 |
|
10 namespace UI |
|
11 { |
|
12 public class MainWindow : Window, Container |
|
13 { |
|
14 public Layout Layout |
|
15 { |
|
16 get |
|
17 { |
|
18 return Container.Layout; |
|
19 } |
|
20 set |
|
21 { |
|
22 Container.Layout = value; |
|
23 } |
|
24 } |
|
25 |
|
26 public IntPtr Object; |
|
27 public Container Container; |
|
28 |
|
29 public MainWindow(String title, IntPtr uiobj) |
|
30 { |
|
31 Title = title; |
|
32 Object = uiobj; |
|
33 Width = 300; |
|
34 Height = 300; |
|
35 |
|
36 Grid windowGrid = new Grid(); |
|
37 ColumnDefinition column = new ColumnDefinition(); |
|
38 column.Width = new GridLength(1, GridUnitType.Star); |
|
39 windowGrid.ColumnDefinitions.Add(column); |
|
40 this.AddChild(windowGrid); |
|
41 int rowIndex = 0; |
|
42 |
|
43 // menu |
|
44 Application app = Application.GetInstance(); |
|
45 System.Windows.Controls.Menu menu = null; |
|
46 if (!app.Menu.IsEmpty()) |
|
47 { |
|
48 menu = app.Menu.CreateMenu(uiobj); |
|
49 |
|
50 RowDefinition menuRow = new RowDefinition(); |
|
51 menuRow.Height = GridLength.Auto; |
|
52 windowGrid.RowDefinitions.Add(menuRow); |
|
53 |
|
54 Grid.SetRow(menu, rowIndex); |
|
55 Grid.SetColumn(menu, 0); |
|
56 windowGrid.Children.Add(menu); |
|
57 rowIndex++; |
|
58 } |
|
59 |
|
60 // toolbar |
|
61 if(app.ToolBar.HasItems()) |
|
62 { |
|
63 System.Windows.Controls.ToolBarTray tray = app.ToolBar.CreateToolBarTray(uiobj); |
|
64 RowDefinition menuRow = new RowDefinition(); |
|
65 menuRow.Height = GridLength.Auto; |
|
66 windowGrid.RowDefinitions.Add(menuRow); |
|
67 |
|
68 Grid.SetRow(tray, rowIndex); |
|
69 Grid.SetColumn(tray, 0); |
|
70 windowGrid.Children.Add(tray); |
|
71 rowIndex++; |
|
72 |
|
73 if(menu != null) |
|
74 { |
|
75 menu.Background = tray.Background; |
|
76 } |
|
77 } |
|
78 |
|
79 // content |
|
80 RowDefinition contentRow = new RowDefinition(); |
|
81 contentRow.Height = new GridLength(1, GridUnitType.Star); |
|
82 windowGrid.RowDefinitions.Add(contentRow); |
|
83 BoxContainer vbox = new BoxContainer(BoxOrientation.VERTICAL, 0, 0); |
|
84 Grid.SetColumn(vbox, 0); |
|
85 Grid.SetRow(vbox, rowIndex); |
|
86 windowGrid.Children.Add(vbox); |
|
87 rowIndex++; |
|
88 |
|
89 Container = vbox; |
|
90 |
|
91 Closed += CloseEvent; |
|
92 } |
|
93 |
|
94 public void ShowWindow() |
|
95 { |
|
96 this.Show(); |
|
97 Application.GetInstance().AddWindow(this); |
|
98 } |
|
99 |
|
100 public void CloseEvent(object sender, System.EventArgs e) |
|
101 { |
|
102 Application.GetInstance().RemoveWindow(this); |
|
103 } |
|
104 |
|
105 public void Add(UIElement control, bool fill) |
|
106 { |
|
107 Container.Add(control, fill); |
|
108 } |
|
109 } |
|
110 } |