7 DEFINE_EVENT_TYPE(EVT_NEW_VM
)
8 DEFINE_EVENT_TYPE(EVT_OPEN_VM
)
10 WelcomeHtmlWindow::WelcomeHtmlWindow(wxWindow
*parent
)
11 :wxHtmlWindow(parent
){
12 this->LoadPage(wxT("welcome.html"));
15 void WelcomeHtmlWindow::OnLinkClicked(const wxHtmlLinkInfo
& link
){
16 const wxString href
= link
.GetHref();
18 if(!href
.CmpNoCase(wxT("/vm/new"))){
19 wxCommandEvent
event(EVT_NEW_VM
,wxID_ANY
);
24 if(!href
.CmpNoCase(wxT("/vm/open"))){
25 wxCommandEvent
event(EVT_OPEN_VM
,wxID_ANY
);
33 QemuUINotebookPage::QemuUINotebookPage(wxWindow
*parent
,QemuVM
*vm
,wxPanel
*info
,VNCPanel
*vncpanel
,ConsolePanel
*console
)
34 :wxPanel(parent
,wxID_ANY
),
41 sizer
= new wxBoxSizer(wxVERTICAL
);
44 sizer
->Add(vncpanel
,1,wxEXPAND
);
46 sizer
->Add(console
,1,wxEXPAND
);
48 //SetAutoLayout(true);
52 QemuVM
* QemuUINotebookPage::GetVM(){
56 void QemuUINotebookPage::SetVM(QemuVM
*vm
){
60 void QemuUINotebookPage::ShowInfo(){
64 bool QemuUINotebookPage::IsInfoPageActive(){
65 return active
== info
;
68 VNCPanel
* QemuUINotebookPage::GetScreen(){
69 return this->vncpanel
;
72 void QemuUINotebookPage::SetVNCPanel(VNCPanel
*vncpanel
){
73 this->vncpanel
= vncpanel
;
74 sizer
->Add(vncpanel
,1,wxALIGN_CENTER_VERTICAL
|wxALIGN_CENTER_HORIZONTAL
,0);
78 bool QemuUINotebookPage::IsScreenActive(){
79 return active
== vncpanel
;
82 ConsolePanel
* QemuUINotebookPage::GetConsole(){
86 void QemuUINotebookPage::SetConsole(ConsolePanel
*console
){
87 this->console
= console
;
88 GetSizer()->Add(console
,1,wxEXPAND
,0);
92 bool QemuUINotebookPage::IsConsoleActive(){
93 return active
== console
;
96 void QemuUINotebookPage::ShowScreen(){
97 this->console
->Show(false);
98 this->vncpanel
->Show(true);
103 void QemuUINotebookPage::ShowConsole(){
104 this->vncpanel
->Show(false);
105 this->console
->Show(true);
106 GetSizer()->Layout();
110 QemuUINotebook::QemuUINotebook(wxWindow
*parent
)
111 :wxNotebook(parent
,QEMU_VM_NOTEBOOK
,wxDefaultPosition
,
112 wxDefaultSize
,wxNB_TOP
)
114 this->homepage
= NULL
;
117 void QemuUINotebook::ShowContextMenu(const wxPoint
& pos
)
120 menu
.Append(QEMU_VM_NOTEBOOK_CONTEXT_CLOSE
, _("C&lose"));
121 PopupMenu(&menu
, pos
);
124 void QemuUINotebook::OnMouseEvent(wxMouseEvent
& event
)
126 wxEventType eventType
= event
.GetEventType();
128 static int lastTabID
= -1;
130 if(eventType
==wxEVT_LEFT_DOWN
){
131 // Save the selected tab
132 lastTabID
=HitTest(wxPoint(event
.GetX(),event
.GetY()));
133 wxSetCursor(wxCursor(wxCURSOR_HAND
));
134 } else if(eventType
== wxEVT_RIGHT_DOWN
){
135 this->contextTabID
= HitTest(event
.GetPosition());
136 ShowContextMenu(event
.GetPosition());
138 } else if(eventType
==wxEVT_LEFT_UP
&& lastTabID
>= 0){
139 int tabID
= HitTest(wxPoint(event
.GetX(), event
.GetY()));
140 //std::cout << "OLD: " << lastTabID << " NEW: " << tabID << "\n";
141 if(tabID
>= 0 && tabID
!= lastTabID
){
142 wxNotebookPage
* page
=GetPage(lastTabID
);
143 wxString text
= GetPageText(lastTabID
);
144 int image
= GetPageImage(lastTabID
);
145 RemovePage(lastTabID
);
146 InsertPage(tabID
, page
, text
, true, image
);
147 // update window menu
150 wxSetCursor(wxCursor(wxCURSOR_ARROW
));
158 void QemuUINotebook::CreateHomepage(){
162 this->homepage
= new WelcomeHtmlWindow(this);
163 this->InsertPage(0,homepage
,_("Welcome"),true);
167 int QemuUINotebook::ShowHomepage(){
168 // if there is no homepage create it
174 for(int i
= 0; i
< GetPageCount(); i
++){
175 if(homepage
== GetPage(i
)){
184 void QemuUINotebook::CloseHomepage(){
188 for(int i
= 0; i
< GetPageCount(); i
++){
189 if(homepage
== GetPage(i
)){
198 bool QemuUINotebook::IsHomepage(const int pos
){
199 wxNotebookPage
*page
= this->GetPage(pos
);
200 return page
== this->homepage
;
203 bool QemuUINotebook::HasHomepage(){
204 return homepage
!= NULL
;
207 void QemuUINotebook::AddVM(QemuVM
*vm
){
208 QemuUINotebookPage
*page
= new QemuUINotebookPage(this,vm
);
209 VNCPanel
*vncpanel
= new VNCPanel(page
,wxString(wxT("127.0.0.1")),1);
210 ConsolePanel
*console
= new ConsolePanel(page
,vm
);
211 page
->SetVNCPanel(vncpanel
);
212 page
->SetConsole(console
);
214 AddPage(page
,vm
->GetTitle());
215 SetSelection(GetPageCount() - 1);
218 QemuUINotebookPage
* QemuUINotebook::GetCurrentVMTab(){
219 const int sel
= GetSelection();
225 return (QemuUINotebookPage
*)GetCurrentPage();
229 QemuVM
* QemuUINotebook::GetCurrentVM(){
230 QemuUINotebookPage
*tab
= GetCurrentVMTab();
237 BEGIN_EVENT_TABLE(QemuUINotebook
,wxNotebook
)
238 EVT_MOUSE_EVENTS(QemuUINotebook::OnMouseEvent
)