Removing wxWidgets and such.

This commit is contained in:
Ben Vanik
2014-12-19 16:32:28 -08:00
parent 59b54a49a9
commit 9460f737e9
19 changed files with 0 additions and 1900 deletions

View File

@@ -20,6 +20,5 @@
'includes': [
'sym/sources.gypi',
'ui/sources.gypi',
],
}

View File

@@ -1,44 +0,0 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2014 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#include <xdb/ui/main_frame.h>
namespace xdb {
namespace ui {
MainFrame::MainFrame(std::unique_ptr<DebugTarget> debug_target)
: MainFrameBase(nullptr), debug_target_(std::move(debug_target)) {
cursor_ = std::move(debug_target_->CreateCursor());
cursor_->end_of_stream.AddListener([]() {
XELOGI("eos");
});
cursor_->module_loaded.AddListener([](Module* module) {
//
XELOGI("mod load");
});
cursor_->module_unloaded.AddListener([](Module* module) {
//
XELOGI("mod unload");
});
cursor_->thread_created.AddListener([](Thread* thread) {
//
XELOGI("thread create");
});
cursor_->thread_exited.AddListener([](Thread* thread) {
//
XELOGI("thread exit");
});
cursor_->Continue();
}
void MainFrame::OnIdle(wxIdleEvent& event) {
}
} // namespace ui
} // namespace xdb

View File

@@ -1,36 +0,0 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2014 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#ifndef XDB_UI_MAIN_FRAME_H_
#define XDB_UI_MAIN_FRAME_H_
#include <memory>
#include <xdb/debug_target.h>
#include <xdb/ui/xdb_ui.h>
namespace xdb {
namespace ui {
class MainFrame : public MainFrameBase {
public:
MainFrame(std::unique_ptr<DebugTarget> debug_target);
protected:
void OnIdle(wxIdleEvent& event) override;
private:
std::unique_ptr<DebugTarget> debug_target_;
std::unique_ptr<Cursor> cursor_;
};
} // namespace ui
} // namespace xdb
#endif // XDB_UI_MAIN_FRAME_H_

View File

@@ -1,33 +0,0 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2014 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#ifndef XDB_UI_OPEN_POSTMORTEM_TRACE_DIALOG_H_
#define XDB_UI_OPEN_POSTMORTEM_TRACE_DIALOG_H_
#include <xdb/ui/xdb_ui.h>
namespace xdb {
namespace ui {
class OpenPostmortemTraceDialog : public OpenPostmortemTraceDialogBase {
public:
OpenPostmortemTraceDialog() : OpenPostmortemTraceDialogBase(nullptr) {}
const std::wstring trace_file_path() const {
return trace_file_picker_->GetFileName().GetFullPath().ToStdWstring();
}
const std::wstring content_file_path() const {
return content_file_picker_->GetFileName().GetFullPath().ToStdWstring();
}
};
} // namespace ui
} // namespace xdb
#endif // XDB_UI_OPEN_POSTMORTEM_TRACE_DIALOG_H_

View File

@@ -1,15 +0,0 @@
# Copyright 2014 Ben Vanik. All Rights Reserved.
{
'sources': [
'main_frame.cc',
'main_frame.h',
'open_postmortem_trace_dialog.h',
'xdb_app.cc',
'xdb_app.h',
'xdb_ui.cpp',
'xdb_ui.h',
],
'includes': [
],
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,126 +0,0 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2014 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#include <xdb/ui/xdb_app.h>
#include <atomic>
#include <thread>
#include <poly/poly.h>
#include <xdb/postmortem_debug_target.h>
#include <xdb/ui/main_frame.h>
#include <xdb/ui/open_postmortem_trace_dialog.h>
#include <third_party/wxWidgets/include/wx/progdlg.h>
namespace xdb {
namespace ui {
IMPLEMENT_APP(XdbApp);
bool XdbApp::OnInit() { return true; }
int XdbApp::OnExit() {
// Top level windows are deleted by wx automatically.
return 0;
}
void XdbApp::OpenEmpty() {
while (true) {
OpenPostmortemTraceDialog dialog;
if (dialog.ShowModal() == wxID_CANCEL) {
Exit();
return;
}
if (OpenTraceFile(dialog.trace_file_path(), dialog.content_file_path())) {
break;
}
}
}
bool XdbApp::OpenTraceFile(const std::string& trace_file_path,
const std::string& content_file_path) {
return OpenTraceFile(poly::to_wstring(trace_file_path),
poly::to_wstring(content_file_path));
}
bool XdbApp::OpenTraceFile(const std::wstring& trace_file_path,
const std::wstring& content_file_path) {
std::unique_ptr<PostmortemDebugTarget> target(new PostmortemDebugTarget());
if (!target->LoadTrace(trace_file_path, content_file_path)) {
HandleOpenError("Unable to load trace file.");
return false;
}
wxProgressDialog progress_dialog(
"Preparing trace...", "This may take some time.", 100, nullptr,
wxPD_APP_MODAL | wxPD_AUTO_HIDE | wxPD_SMOOTH | wxPD_CAN_ABORT |
wxPD_ELAPSED_TIME | wxPD_ELAPSED_TIME);
progress_dialog.Show();
enum class PrepareStatus {
PROCESSING,
SUCCEEDED,
FAILED,
};
std::atomic<PrepareStatus> status(PrepareStatus::PROCESSING);
std::atomic<bool> cancelled;
std::thread preparation_thread([&target, &cancelled, &status]() {
status = target->Prepare(cancelled) ? PrepareStatus::SUCCEEDED
: PrepareStatus::FAILED;
});
do {
std::this_thread::sleep_for(std::chrono::milliseconds(10));
} while (status == PrepareStatus::PROCESSING && progress_dialog.Pulse());
cancelled = progress_dialog.WasCancelled();
preparation_thread.join();
progress_dialog.Hide();
if (cancelled) {
return false;
}
if (status == PrepareStatus::FAILED) {
HandleOpenError("Invalid trace file; unable to process.");
return false;
}
return OpenDebugTarget(std::move(target));
}
bool XdbApp::OpenDebugTarget(std::unique_ptr<DebugTarget> debug_target) {
auto main_frame = new MainFrame(std::move(debug_target));
main_frames_.push_back(main_frame);
main_frame->Connect(wxEVT_DESTROY, wxEventHandler(XdbApp::OnMainFrameDestroy),
nullptr, this);
main_frame->Show();
main_frame->SetFocus();
return true;
}
void XdbApp::HandleOpenError(const std::string& message) {
wxMessageDialog dialog(nullptr, message, "Error",
wxOK | wxOK_DEFAULT | wxICON_ERROR);
dialog.ShowModal();
}
void XdbApp::OnMainFrameDestroy(wxEvent& event) {
for (auto it = main_frames_.begin(); it != main_frames_.end(); ++it) {
if (*it == event.GetEventObject()) {
main_frames_.erase(it);
return;
}
}
assert_always();
}
} // namespace ui
} // namespace xdb

View File

@@ -1,48 +0,0 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2014 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#ifndef XDB_UI_XDB_APP_H_
#define XDB_UI_XDB_APP_H_
#include <memory>
#include <string>
#include <vector>
#include <xdb/debug_target.h>
#include <third_party/wxWidgets/include/wx/wx.h>
namespace xdb {
namespace ui {
class MainFrame;
class XdbApp : public wxApp {
public:
bool OnInit() override;
int OnExit() override;
void OpenEmpty();
bool OpenTraceFile(const std::string& trace_file_path,
const std::string& content_file_path = "");
bool OpenTraceFile(const std::wstring& trace_file_path,
const std::wstring& content_file_path = L"");
bool OpenDebugTarget(std::unique_ptr<DebugTarget> debug_target);
private:
void HandleOpenError(const std::string& message);
void OnMainFrameDestroy(wxEvent& event);
std::vector<MainFrame*> main_frames_;
};
} // namespace ui
} // namespace xdb
#endif // XDB_UI_XDB_APP_H_

View File

@@ -1,135 +0,0 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Jun 5 2014)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#include "xdb_ui.h"
///////////////////////////////////////////////////////////////////////////
using namespace xdb::ui;
MainFrameBase::MainFrameBase( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxFrame( parent, id, title, pos, size, style )
{
this->SetSizeHints( wxDefaultSize, wxDefaultSize );
m_mgr.SetManagedWindow(this);
m_mgr.SetFlags(wxAUI_MGR_DEFAULT|wxAUI_MGR_LIVE_RESIZE);
menu_bar_ = new wxMenuBar( 0 );
file_menu_ = new wxMenu();
menu_bar_->Append( file_menu_, wxT("File") );
this->SetMenuBar( menu_bar_ );
tool_bar_ = new wxAuiToolBar( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxAUI_TB_HORZ_LAYOUT );
tool_test_ = tool_bar_->AddTool( wxID_ANY, wxT("tool"), wxNullBitmap, wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString, NULL );
tool_bar_->Realize();
m_mgr.AddPane( tool_bar_, wxAuiPaneInfo().Top().CaptionVisible( false ).CloseButton( false ).Dock().Resizable().FloatingSize( wxDefaultSize ).DockFixed( false ).BottomDockable( false ).LeftDockable( false ).RightDockable( false ).Layer( 10 ).ToolbarPane() );
status_bar_ = this->CreateStatusBar( 1, wxST_SIZEGRIP, wxID_ANY );
notebook_ = new wxAuiNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxAUI_NB_TAB_EXTERNAL_MOVE|wxAUI_NB_TAB_MOVE|wxAUI_NB_TAB_SPLIT|wxAUI_NB_TOP|wxAUI_NB_WINDOWLIST_BUTTON );
m_mgr.AddPane( notebook_, wxAuiPaneInfo() .Center() .CaptionVisible( false ).CloseButton( false ).PaneBorder( false ).Movable( false ).Dock().Resizable().FloatingSize( wxDefaultSize ).DockFixed( false ).BottomDockable( false ).TopDockable( false ).LeftDockable( false ).RightDockable( false ).Floatable( false ) );
m_panel3 = new wxPanel( notebook_, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
notebook_->AddPage( m_panel3, wxT("a page"), false, wxNullBitmap );
m_panel4 = new wxPanel( notebook_, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
notebook_->AddPage( m_panel4, wxT("a page"), true, wxNullBitmap );
m_mgr.Update();
this->Centre( wxBOTH );
// Connect Events
this->Connect( wxEVT_IDLE, wxIdleEventHandler( MainFrameBase::OnIdle ) );
}
MainFrameBase::~MainFrameBase()
{
// Disconnect Events
this->Disconnect( wxEVT_IDLE, wxIdleEventHandler( MainFrameBase::OnIdle ) );
m_mgr.UnInit();
}
OpenPostmortemTraceDialogBase::OpenPostmortemTraceDialogBase( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
{
this->SetSizeHints( wxDefaultSize, wxDefaultSize );
wxBoxSizer* root_panel_outer;
root_panel_outer = new wxBoxSizer( wxVERTICAL );
wxPanel* root_panel;
root_panel = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
wxFlexGridSizer* root_sizer;
root_sizer = new wxFlexGridSizer( 0, 1, 0, 0 );
root_sizer->AddGrowableCol( 0 );
root_sizer->SetFlexibleDirection( wxVERTICAL );
root_sizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
wxStaticText* info_label;
info_label = new wxStaticText( root_panel, wxID_ANY, wxT("Use --trace_file= to specify the output file path when running xenia-run."), wxDefaultPosition, wxDefaultSize, 0 );
info_label->Wrap( -1 );
root_sizer->Add( info_label, 0, wxALL, 5 );
wxFlexGridSizer* content_sizer;
content_sizer = new wxFlexGridSizer( 0, 2, 0, 0 );
content_sizer->AddGrowableCol( 1 );
content_sizer->SetFlexibleDirection( wxBOTH );
content_sizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
wxStaticText* trace_file_label;
trace_file_label = new wxStaticText( root_panel, wxID_ANY, wxT("Trace File:"), wxDefaultPosition, wxDefaultSize, 0 );
trace_file_label->Wrap( -1 );
content_sizer->Add( trace_file_label, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 );
trace_file_picker_ = new wxFilePickerCtrl( root_panel, wxID_ANY, wxEmptyString, wxT("Select a .trace file"), wxT("*.trace"), wxDefaultPosition, wxDefaultSize, wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL );
content_sizer->Add( trace_file_picker_, 1, wxALIGN_CENTER|wxALL|wxEXPAND, 5 );
wxStaticText* content_file_label;
content_file_label = new wxStaticText( root_panel, wxID_ANY, wxT("Content Path:"), wxDefaultPosition, wxDefaultSize, 0 );
content_file_label->Wrap( -1 );
content_sizer->Add( content_file_label, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 );
content_file_picker_ = new wxFilePickerCtrl( root_panel, wxID_ANY, wxEmptyString, wxT("Select the source content path"), wxT("*.xex;*.iso;*.*"), wxDefaultPosition, wxDefaultSize, wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL );
content_sizer->Add( content_file_picker_, 1, wxALIGN_CENTER|wxALL|wxEXPAND, 5 );
root_sizer->Add( content_sizer, 0, wxEXPAND, 5 );
dialog_buttons_ = new wxStdDialogButtonSizer();
dialog_buttons_OK = new wxButton( root_panel, wxID_OK );
dialog_buttons_->AddButton( dialog_buttons_OK );
dialog_buttons_Cancel = new wxButton( root_panel, wxID_CANCEL );
dialog_buttons_->AddButton( dialog_buttons_Cancel );
dialog_buttons_->Realize();
root_sizer->Add( dialog_buttons_, 1, wxEXPAND, 0 );
root_panel->SetSizer( root_sizer );
root_panel->Layout();
root_sizer->Fit( root_panel );
root_panel_outer->Add( root_panel, 1, wxEXPAND | wxALL, 10 );
this->SetSizer( root_panel_outer );
this->Layout();
root_panel_outer->Fit( this );
this->Centre( wxBOTH );
// Connect Events
dialog_buttons_Cancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OpenPostmortemTraceDialogBase::OnCancelButtonClick ), NULL, this );
dialog_buttons_OK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OpenPostmortemTraceDialogBase::OnOKButtonClick ), NULL, this );
}
OpenPostmortemTraceDialogBase::~OpenPostmortemTraceDialogBase()
{
// Disconnect Events
dialog_buttons_Cancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OpenPostmortemTraceDialogBase::OnCancelButtonClick ), NULL, this );
dialog_buttons_OK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OpenPostmortemTraceDialogBase::OnOKButtonClick ), NULL, this );
}

View File

@@ -1,99 +0,0 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Jun 5 2014)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#ifndef __XDB_UI_H__
#define __XDB_UI_H__
#include <wx/artprov.h>
#include <wx/xrc/xmlres.h>
#include <wx/string.h>
#include <wx/menu.h>
#include <wx/gdicmn.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/bitmap.h>
#include <wx/image.h>
#include <wx/icon.h>
#include <wx/aui/aui.h>
#include <wx/aui/auibar.h>
#include <wx/statusbr.h>
#include <wx/panel.h>
#include <wx/aui/auibook.h>
#include <wx/frame.h>
#include <wx/stattext.h>
#include <wx/filepicker.h>
#include <wx/sizer.h>
#include <wx/button.h>
#include <wx/dialog.h>
///////////////////////////////////////////////////////////////////////////
namespace xdb
{
namespace ui
{
///////////////////////////////////////////////////////////////////////////////
/// Class MainFrameBase
///////////////////////////////////////////////////////////////////////////////
class MainFrameBase : public wxFrame
{
private:
protected:
wxMenuBar* menu_bar_;
wxMenu* file_menu_;
wxAuiToolBar* tool_bar_;
wxAuiToolBarItem* tool_test_;
wxStatusBar* status_bar_;
wxAuiNotebook* notebook_;
wxPanel* m_panel3;
wxPanel* m_panel4;
// Virtual event handlers, overide them in your derived class
virtual void OnIdle( wxIdleEvent& event ) { event.Skip(); }
public:
MainFrameBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("xenia debugger"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 1024,768 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL );
wxAuiManager m_mgr;
~MainFrameBase();
};
///////////////////////////////////////////////////////////////////////////////
/// Class OpenPostmortemTraceDialogBase
///////////////////////////////////////////////////////////////////////////////
class OpenPostmortemTraceDialogBase : public wxDialog
{
private:
protected:
wxFilePickerCtrl* trace_file_picker_;
wxFilePickerCtrl* content_file_picker_;
wxStdDialogButtonSizer* dialog_buttons_;
wxButton* dialog_buttons_OK;
wxButton* dialog_buttons_Cancel;
// Virtual event handlers, overide them in your derived class
virtual void OnCancelButtonClick( wxCommandEvent& event ) { event.Skip(); }
virtual void OnOKButtonClick( wxCommandEvent& event ) { event.Skip(); }
public:
OpenPostmortemTraceDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Open Postmortem Trace"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE );
~OpenPostmortemTraceDialogBase();
};
} // namespace ui
} // namespace xdb
#endif //__XDB_UI_H__