VHDDExplorer::VHDDExplorer(wxWindow* parent, const std::string& hdd_path) : wxDialog(parent, wxID_ANY, "Virtual HDD Explorer", wxDefaultPosition) { m_list = new wxListView(this); m_drop_target = new VHDDListDropTarget(m_list); m_list->SetDropTarget(m_drop_target); m_list->DragAcceptFiles(true); wxBoxSizer& s_main(*new wxBoxSizer(wxVERTICAL)); s_main.Add(m_list, 1, wxEXPAND | wxALL, 5); SetSizerAndFit(&s_main); SetSize(800, 600); m_list->InsertColumn(0, "Name"); m_list->InsertColumn(1, "Type"); m_list->InsertColumn(2, "Size"); m_list->InsertColumn(3, "Creation time"); m_hdd = new vfsHDD(nullptr, hdd_path); UpdateList(); Connect(m_list->GetId(), wxEVT_COMMAND_LIST_BEGIN_DRAG, wxListEventHandler(VHDDExplorer::OnListDrag)); Connect(m_list->GetId(), wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler(VHDDExplorer::DClick)); Connect(m_list->GetId(), wxEVT_COMMAND_RIGHT_CLICK, wxCommandEventHandler(VHDDExplorer::OnContextMenu)); m_list->Connect(wxEVT_DROP_FILES, wxDropFilesEventHandler(VHDDExplorer::OnDropFiles), (wxObject*)0, this); Connect(id_open, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(VHDDExplorer::OnOpen)); Connect(id_rename, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(VHDDExplorer::OnRename)); Connect(id_remove, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(VHDDExplorer::OnRemove)); Connect(id_create_dir, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(VHDDExplorer::OnCreateDir)); Connect(id_create_file, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(VHDDExplorer::OnCreateFile)); Connect(id_import, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(VHDDExplorer::OnImport)); Connect(id_export, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(VHDDExplorer::OnExport)); }
VHDDManagerDialog::VHDDManagerDialog(wxWindow* parent) : wxDialog(parent, wxID_ANY, "Virtual HDD Manager", wxDefaultPosition) { m_list = new wxListView(this); wxBoxSizer& s_main(*new wxBoxSizer(wxVERTICAL)); s_main.Add(m_list, 1, wxEXPAND | wxALL, 5); SetSizerAndFit(&s_main); SetSize(800, 600); m_list->InsertColumn(0, "Path"); //m_list->InsertColumn(1, "Size"); //m_list->InsertColumn(2, "Block size"); Connect(m_list->GetId(), wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler(VHDDManagerDialog::DClick)); Connect(m_list->GetId(), wxEVT_COMMAND_RIGHT_CLICK, wxCommandEventHandler(VHDDManagerDialog::OnContextMenu)); Connect(id_add_hdd, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(VHDDManagerDialog::AddHDD)); Connect(id_open, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(VHDDManagerDialog::OnOpen)); Connect(id_remove, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(VHDDManagerDialog::OnRemove)); Connect(id_create_hdd, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(VHDDManagerDialog::OnCreateHDD)); Connect(wxEVT_CLOSE_WINDOW, wxCloseEventHandler(VHDDManagerDialog::OnClose)); LoadPaths(); UpdateList(); }
VHDDSetInfoDialog::VHDDSetInfoDialog(wxWindow* parent) : wxDialog(parent, wxID_ANY, "HDD Settings", wxDefaultPosition) { m_spin_size = new wxSpinCtrl(this); m_ch_type = new wxChoice(this, wxID_ANY); m_spin_block_size = new wxSpinCtrl(this); wxBoxSizer& s_sinf(*new wxBoxSizer(wxHORIZONTAL)); s_sinf.Add(m_spin_size, wxSizerFlags().Border(wxALL, 5).Expand()); s_sinf.Add(m_ch_type, wxSizerFlags().Border(wxALL, 5).Expand()); wxBoxSizer& s_binf(*new wxBoxSizer(wxHORIZONTAL)); s_binf.Add(m_spin_block_size, wxSizerFlags().Border(wxALL, 5).Expand()); wxBoxSizer& s_btns(*new wxBoxSizer(wxHORIZONTAL)); s_btns.Add(new wxButton(this, wxID_OK), wxSizerFlags().Align(wxALIGN_LEFT).Border(wxALL, 5)); s_btns.Add(new wxButton(this, wxID_CANCEL), wxSizerFlags().Align(wxALIGN_RIGHT).Border(wxALL, 5)); wxBoxSizer& s_main(*new wxBoxSizer(wxVERTICAL)); s_main.Add(&s_sinf, wxSizerFlags().Align(wxALIGN_TOP).Expand()); s_main.Add(&s_binf, wxSizerFlags().Align(wxALIGN_TOP).Expand()); s_main.Add(&s_btns, wxSizerFlags().Align(wxALIGN_BOTTOM).Expand()); SetSizerAndFit(&s_main); m_ch_type->Append("B"); m_ch_type->Append("KB"); m_ch_type->Append("MB"); m_ch_type->Append("GB"); m_spin_size->SetRange(1, 0x7fffffff); m_spin_size->SetValue(64); m_ch_type->SetSelection(3); m_spin_block_size->SetRange(64, 0x7fffffff); m_spin_block_size->SetValue(2048); Connect(wxID_OK, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(VHDDSetInfoDialog::OnOk)); }
VFSEntrySettingsDialog::VFSEntrySettingsDialog(wxWindow* parent, VFSManagerEntry& entry) : wxDialog(parent, wxID_ANY, "Mount configuration", wxDefaultPosition) , m_entry(entry) { m_tctrl_dev_path = new wxTextCtrl(this, wxID_ANY); m_btn_select_dev_path = new wxButton(this, wxID_ANY, "..."); m_tctrl_path = new wxTextCtrl(this, wxID_ANY); m_btn_select_path = new wxButton(this, wxID_ANY, "..."); m_tctrl_mount = new wxTextCtrl(this, wxID_ANY); m_ch_type = new wxChoice(this, wxID_ANY); wxBoxSizer& s_type(*new wxBoxSizer(wxHORIZONTAL)); s_type.Add(m_ch_type, 1, wxEXPAND); wxBoxSizer& s_dev_path(*new wxBoxSizer(wxHORIZONTAL)); s_dev_path.Add(m_tctrl_dev_path, 1, wxEXPAND); s_dev_path.Add(m_btn_select_dev_path, 0, wxLEFT, 5); wxBoxSizer& s_path(*new wxBoxSizer(wxHORIZONTAL)); s_path.Add(m_tctrl_path, 1, wxEXPAND); s_path.Add(m_btn_select_path, 0, wxLEFT, 5); wxBoxSizer& s_mount(*new wxBoxSizer(wxHORIZONTAL)); s_mount.Add(m_tctrl_mount, 1, wxEXPAND); wxBoxSizer& s_btns(*new wxBoxSizer(wxHORIZONTAL)); s_btns.Add(new wxButton(this, wxID_OK)); s_btns.AddSpacer(30); s_btns.Add(new wxButton(this, wxID_CANCEL)); wxBoxSizer& s_main(*new wxBoxSizer(wxVERTICAL)); s_main.Add(&s_type, 1, wxEXPAND | wxALL, 10); s_main.Add(&s_dev_path, 1, wxEXPAND | wxALL, 10); s_main.Add(&s_path, 1, wxEXPAND | wxALL, 10); s_main.Add(&s_mount, 1, wxEXPAND | wxALL, 10); s_main.AddSpacer(10); s_main.Add(&s_btns, 0, wxALL | wxCENTER, 10); SetSizerAndFit(&s_main); SetSize(350, -1); for(const auto i : vfsDeviceTypeNames) { m_ch_type->Append(i); } Connect(m_ch_type->GetId(), wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler(VFSEntrySettingsDialog::OnSelectType)); Connect(m_btn_select_path->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(VFSEntrySettingsDialog::OnSelectPath)); Connect(m_btn_select_dev_path->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(VFSEntrySettingsDialog::OnSelectDevPath)); Connect(wxID_OK, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(VFSEntrySettingsDialog::OnOk)); m_tctrl_dev_path->SetValue(m_entry.device_path); m_tctrl_path->SetValue(m_entry.path); m_tctrl_mount->SetValue(m_entry.mount); m_ch_type->SetSelection(m_entry.device); wxCommandEvent ce; OnSelectType(ce); }
VFSManagerDialog::VFSManagerDialog(wxWindow* parent) : wxDialog(parent, wxID_ANY, "Virtual File System Manager", wxDefaultPosition) { m_list = new wxListView(this); wxBoxSizer& s_main(*new wxBoxSizer(wxVERTICAL)); s_main.Add(m_list, 1, wxEXPAND); SetSizerAndFit(&s_main); SetSize(800, 600); m_list->InsertColumn(0, "Path"); m_list->InsertColumn(1, "Device path"); m_list->InsertColumn(2, "Path to Device"); m_list->InsertColumn(3, "Device"); Connect(m_list->GetId(), wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxCommandEventHandler(VFSManagerDialog::OnEntryConfig)); Connect(m_list->GetId(), wxEVT_COMMAND_RIGHT_CLICK, wxCommandEventHandler(VFSManagerDialog::OnRightClick)); Connect(id_add, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(VFSManagerDialog::OnAdd)); Connect(id_remove, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(VFSManagerDialog::OnRemove)); Connect(id_config, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(VFSManagerDialog::OnEntryConfig)); Connect(wxEVT_CLOSE_WINDOW, wxCloseEventHandler(VFSManagerDialog::OnClose)); LoadEntries(); UpdateList(); }
TextInputDialog::TextInputDialog(wxWindow* parent, const std::string& defvalue, const std::string& label) : wxDialog(parent, wxID_ANY, label, wxDefaultPosition) { m_tctrl_text = new wxTextCtrl(this, wxID_ANY, fmt::ToUTF8(defvalue)); wxBoxSizer& s_text(*new wxBoxSizer(wxVERTICAL)); s_text.Add(m_tctrl_text, 1, wxEXPAND); wxBoxSizer& s_btns(*new wxBoxSizer(wxHORIZONTAL)); s_btns.Add(new wxButton(this, wxID_OK)); s_btns.AddSpacer(30); s_btns.Add(new wxButton(this, wxID_CANCEL)); wxBoxSizer& s_main(*new wxBoxSizer(wxVERTICAL)); s_main.Add(&s_text, 1, wxEXPAND | wxUP | wxLEFT | wxRIGHT, 5); s_main.AddSpacer(30); s_main.Add(&s_btns, 0, wxCENTER | wxDOWN | wxLEFT | wxRIGHT, 5); SetSizerAndFit(&s_main); SetSize(250, -1); Connect(wxID_OK, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(TextInputDialog::OnOk)); }