3 #include <wx/listctrl.h>
11 BEGIN_EVENT_TABLE(QemuUIFavoritesWindow
,wxPanel
)
12 EVT_LIST_ITEM_RIGHT_CLICK(wxID_ANY
,QemuUIFavoritesWindow::OnContextMenu
)
13 EVT_LIST_ITEM_ACTIVATED(wxID_ANY
,QemuUIFavoritesWindow::OnListItemActivated
)
14 EVT_MENU(ID_FAVORITES_CONTEXT_OPEN
,QemuUIFavoritesWindow::OnContextMenuOpen
)
15 EVT_MENU(ID_FAVORITES_CONTEXT_EDIT
,QemuUIFavoritesWindow::OnContextMenuEdit
)
16 EVT_MENU(ID_FAVORITES_CONTEXT_REMOVE
,QemuUIFavoritesWindow::OnContextMenuRemove
)
19 QemuUIFavoritesWindow::QemuUIFavoritesWindow(wxWindow
* parent
)
20 :wxPanel(parent
,wxID_ANY
)
23 wxBoxSizer
*titlesizer
= new wxBoxSizer(wxHORIZONTAL
);
24 label
= new wxStaticText(this,-1,_("Favorites"));
25 button
= new wxButton(this,ID_FAVORITES_CLOSE
,_(" "),wxDefaultPosition
,wxSize(20,20));
26 list
= new wxListCtrl(this);
27 list
->SetSingleStyle(wxLC_SMALL_ICON
);
28 list
->SetSingleStyle(wxLC_NO_HEADER
);
29 list
->SetSingleStyle(wxLC_REPORT
);
30 list
->SetSingleStyle(wxLC_LIST
);
31 list
->SetSingleStyle(wxLC_SINGLE_SEL
);
36 wxALL
|wxEXPAND
|wxALIGN_CENTER_VERTICAL
,
43 wxALL
|wxALIGN_CENTER_VERTICAL
,
47 sizer
= new wxBoxSizer(wxVERTICAL
);
48 sizer
->Add(titlesizer
,0,wxEXPAND
);
49 sizer
->Add(list
,1,wxEXPAND
);
56 QemuUIFavoritesWindow::~QemuUIFavoritesWindow(){
57 wxConfigBase
*favorites
= wxConfigBase::Get();
58 favorites
->DeleteGroup(wxT("/favorites"));
59 favorites
->SetPath(wxT("/favorites"));
61 for(int i
= 0; i
< list
->GetItemCount(); i
++){
62 config
= (wxString
*)list
->GetItemData(i
);
65 favorites
->Write(key
,*config
);
71 void QemuUIFavoritesWindow::LoadFavorites(){
72 wxConfigBase
*favorites
= wxConfigBase::Get();
73 if(favorites
->HasGroup(wxT("/favorites"))){
74 favorites
->SetPath(wxT("/favorites"));
75 wxString key
= wxT("0");
78 while(favorites
->HasEntry(key
)){
79 config
= favorites
->Read(key
);
80 QemuVM
*vm
= new QemuVM(config
);
83 key
.Printf(wxT("%d"),++index
);
89 void QemuUIFavoritesWindow::AddVM(QemuVM
*vm
){
90 wxString config
= vm
->GetConfigFile();
91 for(int i
= 0; i
< list
->GetItemCount(); i
++){
92 wxString
*c
= (wxString
*)list
->GetItemData(i
);
93 if(config
.Cmp(*c
) == 0)
98 item
.SetText(vm
->GetTitle());
99 item
.SetData(new wxString(config
));
100 list
->InsertItem(item
);
103 void QemuUIFavoritesWindow::OnContextMenu(wxListEvent
& event
){
104 if(event
.GetIndex() == -1)
107 menu
.Append(ID_FAVORITES_CONTEXT_OPEN
,_("&Open"));
108 menu
.Append(ID_FAVORITES_CONTEXT_EDIT
,_("&Edit"));
109 menu
.AppendSeparator();
110 menu
.Append(ID_FAVORITES_CONTEXT_REMOVE
,_("&Remove"));
114 void QemuUIFavoritesWindow::OnContextMenuOpen(wxCommandEvent
& WXUNUSED(event
)){
118 void QemuUIFavoritesWindow::OnListItemActivated(wxListEvent
& WXUNUSED(event
)){
122 void QemuUIFavoritesWindow::OpenVM(){
123 long index
=list
->GetNextItem(-1,wxLIST_NEXT_ALL
,wxLIST_STATE_SELECTED
);
127 wxString
*config
= (wxString
*)list
->GetItemData(index
);
128 QemuGUI::GetMainFrame()->OpenVM(*config
);
131 void QemuUIFavoritesWindow::OnContextMenuEdit(wxCommandEvent
& WXUNUSED(event
)){
132 long index
=list
->GetNextItem(-1,wxLIST_NEXT_ALL
,wxLIST_STATE_SELECTED
);
136 wxString
*config
= (wxString
*)list
->GetItemData(index
);
137 QemuVM
*vm
= new QemuVM(*config
);
138 QemuVMConfigDialog
*dialog
= new QemuVMConfigDialog(this,vm
);
139 if(dialog
->ShowModal() == wxID_OK
){
141 list
->SetItemText(index
,vm
->GetTitle());
147 void QemuUIFavoritesWindow::OnContextMenuRemove(wxCommandEvent
& WXUNUSED(event
)){
148 long index
=list
->GetNextItem(-1,wxLIST_NEXT_ALL
,wxLIST_STATE_SELECTED
);
152 delete (wxString
*)list
->GetItemData(index
);
153 list
->DeleteItem(index
);