Skeleton debugger UI (playing with things).
This commit is contained in:
parent
ad2b8147c3
commit
77894ac03a
|
@ -9,6 +9,8 @@
|
||||||
|
|
||||||
#include "xenia/debug/ui/main_window.h"
|
#include "xenia/debug/ui/main_window.h"
|
||||||
|
|
||||||
|
#include "el/animation_manager.h"
|
||||||
|
#include "el/util/debug.h"
|
||||||
#include "xenia/base/clock.h"
|
#include "xenia/base/clock.h"
|
||||||
#include "xenia/base/logging.h"
|
#include "xenia/base/logging.h"
|
||||||
#include "xenia/base/platform.h"
|
#include "xenia/base/platform.h"
|
||||||
|
@ -96,9 +98,60 @@ bool MainWindow::Initialize() {
|
||||||
|
|
||||||
Resize(1440, 1200);
|
Resize(1440, 1200);
|
||||||
|
|
||||||
|
BuildUI();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::BuildUI() {
|
||||||
|
using namespace el::dsl;
|
||||||
|
el::AnimationBlocker animation_blocker;
|
||||||
|
|
||||||
|
auto root_element = control_->root_element();
|
||||||
|
window_ = std::make_unique<el::Window>();
|
||||||
|
window_->set_settings(el::WindowSettings::kFullScreen);
|
||||||
|
root_element->AddChild(window_.get());
|
||||||
|
|
||||||
|
auto root_node =
|
||||||
|
LayoutBoxNode()
|
||||||
|
.gravity(Gravity::kAll)
|
||||||
|
.distribution(LayoutDistribution::kAvailable)
|
||||||
|
.axis(Axis::kY)
|
||||||
|
.child(LayoutBoxNode()
|
||||||
|
.id("toolbar_box")
|
||||||
|
.gravity(Gravity::kTop | Gravity::kLeftRight)
|
||||||
|
.distribution(LayoutDistribution::kAvailable)
|
||||||
|
.child(LabelNode("toolbar")))
|
||||||
|
.child(
|
||||||
|
SplitContainerNode()
|
||||||
|
.id("split_container")
|
||||||
|
.gravity(Gravity::kAll)
|
||||||
|
.axis(Axis::kX)
|
||||||
|
.fixed_pane(FixedPane::kSecond)
|
||||||
|
.min(128)
|
||||||
|
.value(250)
|
||||||
|
.pane(TabContainerNode()
|
||||||
|
.id("tab_container")
|
||||||
|
.gravity(Gravity::kAll)
|
||||||
|
.align(Align::kTop))
|
||||||
|
.pane(LayoutBoxNode().id("log_box").gravity(Gravity::kAll)));
|
||||||
|
|
||||||
|
window_->LoadNodeTree(root_node);
|
||||||
|
window_->GetElementsById({
|
||||||
|
{TBIDC("split_container"), &ui_.split_container},
|
||||||
|
{TBIDC("toolbar_box"), &ui_.toolbar_box},
|
||||||
|
{TBIDC("tab_container"), &ui_.tab_container},
|
||||||
|
});
|
||||||
|
|
||||||
|
ui_.tab_container->tab_bar()->LoadNodeTree(ButtonNode(cpu_view_.name()));
|
||||||
|
ui_.tab_container->content_root()->AddChild(cpu_view_.BuildUI());
|
||||||
|
|
||||||
|
ui_.tab_container->tab_bar()->LoadNodeTree(ButtonNode(gpu_view_.name()));
|
||||||
|
ui_.tab_container->content_root()->AddChild(gpu_view_.BuildUI());
|
||||||
|
|
||||||
|
el::util::ShowDebugInfoSettingsWindow(root_element);
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::OnClose() { app_->Quit(); }
|
void MainWindow::OnClose() { app_->Quit(); }
|
||||||
|
|
||||||
void MainWindow::OnCommand(int id) {
|
void MainWindow::OnCommand(int id) {
|
||||||
|
|
|
@ -12,7 +12,10 @@
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
#include "el/elements.h"
|
||||||
#include "xenia/debug/ui/application.h"
|
#include "xenia/debug/ui/application.h"
|
||||||
|
#include "xenia/debug/ui/views/cpu/cpu_view.h"
|
||||||
|
#include "xenia/debug/ui/views/gpu/gpu_view.h"
|
||||||
#include "xenia/ui/elemental_control.h"
|
#include "xenia/ui/elemental_control.h"
|
||||||
#include "xenia/ui/platform.h"
|
#include "xenia/ui/platform.h"
|
||||||
#include "xenia/ui/window.h"
|
#include "xenia/ui/window.h"
|
||||||
|
@ -30,13 +33,26 @@ class MainWindow : public xe::ui::PlatformWindow {
|
||||||
|
|
||||||
bool Initialize();
|
bool Initialize();
|
||||||
|
|
||||||
|
// void NavigateToCpuView(uint32_t address);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void BuildUI();
|
||||||
|
|
||||||
void OnClose() override;
|
void OnClose() override;
|
||||||
void OnCommand(int id) override;
|
void OnCommand(int id) override;
|
||||||
|
|
||||||
Application* app_ = nullptr;
|
Application* app_ = nullptr;
|
||||||
xe::ui::PlatformMenu main_menu_;
|
xe::ui::PlatformMenu main_menu_;
|
||||||
std::unique_ptr<xe::ui::ElementalControl> control_;
|
std::unique_ptr<xe::ui::ElementalControl> control_;
|
||||||
|
|
||||||
|
std::unique_ptr<el::Window> window_;
|
||||||
|
struct {
|
||||||
|
el::SplitContainer* split_container;
|
||||||
|
el::LayoutBox* toolbar_box;
|
||||||
|
el::TabContainer* tab_container;
|
||||||
|
} ui_ = {0};
|
||||||
|
views::cpu::CpuView cpu_view_;
|
||||||
|
views::gpu::GpuView gpu_view_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace ui
|
} // namespace ui
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
/**
|
||||||
|
******************************************************************************
|
||||||
|
* Xenia : Xbox 360 Emulator Research Project *
|
||||||
|
******************************************************************************
|
||||||
|
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||||
|
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||||
|
******************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef XENIA_DEBUG_UI_VIEW_H_
|
||||||
|
#define XENIA_DEBUG_UI_VIEW_H_
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "el/elements.h"
|
||||||
|
|
||||||
|
namespace xe {
|
||||||
|
namespace debug {
|
||||||
|
namespace ui {
|
||||||
|
|
||||||
|
class View {
|
||||||
|
public:
|
||||||
|
virtual ~View() = default;
|
||||||
|
|
||||||
|
std::string name() const { return name_; }
|
||||||
|
el::LayoutBox* root_element() { return &root_element_; }
|
||||||
|
|
||||||
|
virtual el::Element* BuildUI() = 0;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
View(std::string name) : name_(name) {}
|
||||||
|
|
||||||
|
std::string name_;
|
||||||
|
el::LayoutBox root_element_;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace ui
|
||||||
|
} // namespace debug
|
||||||
|
} // namespace xe
|
||||||
|
|
||||||
|
#endif // XENIA_DEBUG_UI_VIEW_H_
|
|
@ -0,0 +1,154 @@
|
||||||
|
/**
|
||||||
|
******************************************************************************
|
||||||
|
* Xenia : Xbox 360 Emulator Research Project *
|
||||||
|
******************************************************************************
|
||||||
|
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||||
|
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||||
|
******************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "el/animation_manager.h"
|
||||||
|
#include "xenia/debug/ui/views/cpu/cpu_view.h"
|
||||||
|
|
||||||
|
namespace xe {
|
||||||
|
namespace debug {
|
||||||
|
namespace ui {
|
||||||
|
namespace views {
|
||||||
|
namespace cpu {
|
||||||
|
|
||||||
|
CpuView::CpuView() : View("CPU") {}
|
||||||
|
|
||||||
|
CpuView::~CpuView() = default;
|
||||||
|
|
||||||
|
el::Element* CpuView::BuildUI() {
|
||||||
|
using namespace el::dsl;
|
||||||
|
el::AnimationBlocker animation_blocker;
|
||||||
|
|
||||||
|
auto functions_node =
|
||||||
|
LayoutBoxNode()
|
||||||
|
.gravity(Gravity::kAll)
|
||||||
|
.distribution(LayoutDistribution::kAvailable)
|
||||||
|
.axis(Axis::kY)
|
||||||
|
.child(
|
||||||
|
LayoutBoxNode()
|
||||||
|
.gravity(Gravity::kTop | Gravity::kLeftRight)
|
||||||
|
.distribution(LayoutDistribution::kAvailable)
|
||||||
|
.axis(Axis::kX)
|
||||||
|
.skin("button_group")
|
||||||
|
.child(ButtonNode("?"))
|
||||||
|
.child(
|
||||||
|
DropDownButtonNode().item("Module").item("Module").item(
|
||||||
|
"Module")))
|
||||||
|
.child(ListBoxNode()
|
||||||
|
.gravity(Gravity::kAll)
|
||||||
|
.item("fn")
|
||||||
|
.item("fn")
|
||||||
|
.item("fn")
|
||||||
|
.item("fn"))
|
||||||
|
.child(LayoutBoxNode()
|
||||||
|
.gravity(Gravity::kBottom | Gravity::kLeftRight)
|
||||||
|
.distribution(LayoutDistribution::kAvailable)
|
||||||
|
.axis(Axis::kX)
|
||||||
|
.child(TextBoxNode()
|
||||||
|
.type(EditType::kSearch)
|
||||||
|
.placeholder("Filter")));
|
||||||
|
|
||||||
|
auto source_code_node =
|
||||||
|
LayoutBoxNode()
|
||||||
|
.gravity(Gravity::kAll)
|
||||||
|
.distribution(LayoutDistribution::kAvailable)
|
||||||
|
.axis(Axis::kY)
|
||||||
|
.child(
|
||||||
|
LayoutBoxNode()
|
||||||
|
.gravity(Gravity::kTop | Gravity::kLeftRight)
|
||||||
|
.distribution(LayoutDistribution::kGravity)
|
||||||
|
.distribution_position(LayoutDistributionPosition::kLeftTop)
|
||||||
|
.axis(Axis::kX)
|
||||||
|
.child(ButtonNode("A")))
|
||||||
|
.child(TextBoxNode("source!")
|
||||||
|
.gravity(Gravity::kAll)
|
||||||
|
.is_multiline(true)
|
||||||
|
.is_read_only(true));
|
||||||
|
|
||||||
|
auto register_list_node = ListBoxNode()
|
||||||
|
.gravity(Gravity::kAll)
|
||||||
|
.item("A")
|
||||||
|
.item("A")
|
||||||
|
.item("A")
|
||||||
|
.item("A");
|
||||||
|
auto source_registers_node =
|
||||||
|
TabContainerNode()
|
||||||
|
.gravity(Gravity::kAll)
|
||||||
|
.tab(ButtonNode("GPR"), CloneNode(register_list_node))
|
||||||
|
.tab(ButtonNode("FPR"), CloneNode(register_list_node))
|
||||||
|
.tab(ButtonNode("VMX"), CloneNode(register_list_node));
|
||||||
|
|
||||||
|
auto source_tools_node =
|
||||||
|
TabContainerNode()
|
||||||
|
.gravity(Gravity::kAll)
|
||||||
|
.align(Align::kLeft)
|
||||||
|
.tab(ButtonNode("Stack"), LabelNode("STACK"))
|
||||||
|
.tab(ButtonNode("BPs"), LabelNode("BREAKPOINTS"));
|
||||||
|
|
||||||
|
auto source_pane_node =
|
||||||
|
LayoutBoxNode()
|
||||||
|
.gravity(Gravity::kAll)
|
||||||
|
.distribution(LayoutDistribution::kAvailable)
|
||||||
|
.axis(Axis::kY)
|
||||||
|
.child(
|
||||||
|
LayoutBoxNode()
|
||||||
|
.id("source_toolbar")
|
||||||
|
.gravity(Gravity::kTop | Gravity::kLeftRight)
|
||||||
|
.distribution(LayoutDistribution::kGravity)
|
||||||
|
.distribution_position(LayoutDistributionPosition::kLeftTop)
|
||||||
|
.axis(Axis::kX)
|
||||||
|
.child(ButtonNode("button"))
|
||||||
|
.child(ButtonNode("button"))
|
||||||
|
.child(ButtonNode("button")))
|
||||||
|
.child(LayoutBoxNode()
|
||||||
|
.gravity(Gravity::kAll)
|
||||||
|
.distribution(LayoutDistribution::kAvailable)
|
||||||
|
.child(SplitContainerNode()
|
||||||
|
.gravity(Gravity::kAll)
|
||||||
|
.axis(Axis::kX)
|
||||||
|
.fixed_pane(FixedPane::kSecond)
|
||||||
|
.value(128)
|
||||||
|
.pane(SplitContainerNode()
|
||||||
|
.gravity(Gravity::kAll)
|
||||||
|
.axis(Axis::kY)
|
||||||
|
.fixed_pane(FixedPane::kSecond)
|
||||||
|
.value(180)
|
||||||
|
.pane(source_code_node)
|
||||||
|
.pane(source_registers_node))
|
||||||
|
.pane(source_tools_node)));
|
||||||
|
|
||||||
|
auto memory_pane_node = LabelNode("MEMORY");
|
||||||
|
|
||||||
|
auto node = SplitContainerNode()
|
||||||
|
.gravity(Gravity::kAll)
|
||||||
|
.axis(Axis::kY)
|
||||||
|
.min(128)
|
||||||
|
.max(512)
|
||||||
|
.value(128)
|
||||||
|
.pane(functions_node)
|
||||||
|
.pane(SplitContainerNode()
|
||||||
|
.gravity(Gravity::kAll)
|
||||||
|
.axis(Axis::kY)
|
||||||
|
.value(800)
|
||||||
|
.pane(source_pane_node)
|
||||||
|
.pane(memory_pane_node));
|
||||||
|
|
||||||
|
root_element_.set_gravity(Gravity::kAll);
|
||||||
|
root_element_.set_layout_distribution(LayoutDistribution::kAvailable);
|
||||||
|
root_element_.LoadNodeTree(node);
|
||||||
|
root_element_.GetElementsById({
|
||||||
|
//
|
||||||
|
});
|
||||||
|
return &root_element_;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace cpu
|
||||||
|
} // namespace views
|
||||||
|
} // namespace ui
|
||||||
|
} // namespace debug
|
||||||
|
} // namespace xe
|
|
@ -0,0 +1,40 @@
|
||||||
|
/**
|
||||||
|
******************************************************************************
|
||||||
|
* Xenia : Xbox 360 Emulator Research Project *
|
||||||
|
******************************************************************************
|
||||||
|
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||||
|
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||||
|
******************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef XENIA_DEBUG_UI_VIEWS_CPU_CPU_VIEW_H_
|
||||||
|
#define XENIA_DEBUG_UI_VIEWS_CPU_CPU_VIEW_H_
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "xenia/debug/ui/view.h"
|
||||||
|
|
||||||
|
namespace xe {
|
||||||
|
namespace debug {
|
||||||
|
namespace ui {
|
||||||
|
namespace views {
|
||||||
|
namespace cpu {
|
||||||
|
|
||||||
|
class CpuView : public View {
|
||||||
|
public:
|
||||||
|
CpuView();
|
||||||
|
~CpuView() override;
|
||||||
|
|
||||||
|
el::Element* BuildUI() override;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace cpu
|
||||||
|
} // namespace views
|
||||||
|
} // namespace ui
|
||||||
|
} // namespace debug
|
||||||
|
} // namespace xe
|
||||||
|
|
||||||
|
#endif // XENIA_DEBUG_UI_VIEWS_CPU_CPU_VIEW_H_
|
|
@ -0,0 +1,42 @@
|
||||||
|
/**
|
||||||
|
******************************************************************************
|
||||||
|
* Xenia : Xbox 360 Emulator Research Project *
|
||||||
|
******************************************************************************
|
||||||
|
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||||
|
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||||
|
******************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "el/animation_manager.h"
|
||||||
|
#include "xenia/debug/ui/views/gpu/gpu_view.h"
|
||||||
|
|
||||||
|
namespace xe {
|
||||||
|
namespace debug {
|
||||||
|
namespace ui {
|
||||||
|
namespace views {
|
||||||
|
namespace gpu {
|
||||||
|
|
||||||
|
GpuView::GpuView() : View("GPU") {}
|
||||||
|
|
||||||
|
GpuView::~GpuView() = default;
|
||||||
|
|
||||||
|
el::Element* GpuView::BuildUI() {
|
||||||
|
using namespace el::dsl;
|
||||||
|
el::AnimationBlocker animation_blocker;
|
||||||
|
|
||||||
|
auto node = LabelNode("TODO");
|
||||||
|
|
||||||
|
root_element_.set_gravity(Gravity::kAll);
|
||||||
|
root_element_.set_layout_distribution(LayoutDistribution::kAvailable);
|
||||||
|
root_element_.LoadNodeTree(node);
|
||||||
|
root_element_.GetElementsById({
|
||||||
|
//
|
||||||
|
});
|
||||||
|
return &root_element_;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace gpu
|
||||||
|
} // namespace views
|
||||||
|
} // namespace ui
|
||||||
|
} // namespace debug
|
||||||
|
} // namespace xe
|
|
@ -0,0 +1,40 @@
|
||||||
|
/**
|
||||||
|
******************************************************************************
|
||||||
|
* Xenia : Xbox 360 Emulator Research Project *
|
||||||
|
******************************************************************************
|
||||||
|
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||||
|
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||||
|
******************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef XENIA_DEBUG_UI_VIEWS_GPU_GPU_VIEW_H_
|
||||||
|
#define XENIA_DEBUG_UI_VIEWS_GPU_GPU_VIEW_H_
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "xenia/debug/ui/view.h"
|
||||||
|
|
||||||
|
namespace xe {
|
||||||
|
namespace debug {
|
||||||
|
namespace ui {
|
||||||
|
namespace views {
|
||||||
|
namespace gpu {
|
||||||
|
|
||||||
|
class GpuView : public View {
|
||||||
|
public:
|
||||||
|
GpuView();
|
||||||
|
~GpuView() override;
|
||||||
|
|
||||||
|
el::Element* BuildUI() override;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace gpu
|
||||||
|
} // namespace views
|
||||||
|
} // namespace ui
|
||||||
|
} // namespace debug
|
||||||
|
} // namespace xe
|
||||||
|
|
||||||
|
#endif // XENIA_DEBUG_UI_VIEWS_GPU_GPU_VIEW_H_
|
|
@ -77,11 +77,16 @@
|
||||||
<ClInclude Include="..\..\base\main.h" />
|
<ClInclude Include="..\..\base\main.h" />
|
||||||
<ClInclude Include="application.h" />
|
<ClInclude Include="application.h" />
|
||||||
<ClInclude Include="main_window.h" />
|
<ClInclude Include="main_window.h" />
|
||||||
|
<ClInclude Include="view.h" />
|
||||||
|
<ClInclude Include="views\cpu\cpu_view.h" />
|
||||||
|
<ClInclude Include="views\gpu\gpu_view.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\..\base\main_win.cc" />
|
<ClCompile Include="..\..\base\main_win.cc" />
|
||||||
<ClCompile Include="application.cc" />
|
<ClCompile Include="application.cc" />
|
||||||
<ClCompile Include="main_window.cc" />
|
<ClCompile Include="main_window.cc" />
|
||||||
|
<ClCompile Include="views\cpu\cpu_view.cc" />
|
||||||
|
<ClCompile Include="views\gpu\gpu_view.cc" />
|
||||||
<ClCompile Include="xe-debug-ui.cc" />
|
<ClCompile Include="xe-debug-ui.cc" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -19,6 +19,15 @@
|
||||||
<Filter Include="src\xenia\debug\ui\elements">
|
<Filter Include="src\xenia\debug\ui\elements">
|
||||||
<UniqueIdentifier>{f0ac4999-4700-4b41-b73d-c6dc8b23c5e6}</UniqueIdentifier>
|
<UniqueIdentifier>{f0ac4999-4700-4b41-b73d-c6dc8b23c5e6}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
<Filter Include="src\xenia\debug\ui\views">
|
||||||
|
<UniqueIdentifier>{5601b0a2-a720-4d89-9fca-df1637fce0b1}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="src\xenia\debug\ui\views\cpu">
|
||||||
|
<UniqueIdentifier>{5b186e9a-1fef-42f5-b06b-2ac0b10a8a5b}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="src\xenia\debug\ui\views\gpu">
|
||||||
|
<UniqueIdentifier>{c66e9a6b-0947-4610-9b2b-29db99c08e91}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="..\..\base\main.h">
|
<ClInclude Include="..\..\base\main.h">
|
||||||
|
@ -30,6 +39,15 @@
|
||||||
<ClInclude Include="application.h">
|
<ClInclude Include="application.h">
|
||||||
<Filter>src\xenia\debug\ui</Filter>
|
<Filter>src\xenia\debug\ui</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="view.h">
|
||||||
|
<Filter>src\xenia\debug\ui</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="views\gpu\gpu_view.h">
|
||||||
|
<Filter>src\xenia\debug\ui\views\gpu</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="views\cpu\cpu_view.h">
|
||||||
|
<Filter>src\xenia\debug\ui\views\cpu</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\..\base\main_win.cc">
|
<ClCompile Include="..\..\base\main_win.cc">
|
||||||
|
@ -44,6 +62,12 @@
|
||||||
<ClCompile Include="application.cc">
|
<ClCompile Include="application.cc">
|
||||||
<Filter>src\xenia\debug\ui</Filter>
|
<Filter>src\xenia\debug\ui</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="views\gpu\gpu_view.cc">
|
||||||
|
<Filter>src\xenia\debug\ui\views\gpu</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="views\cpu\cpu_view.cc">
|
||||||
|
<Filter>src\xenia\debug\ui\views\cpu</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ResourceCompile Include="resources.rc">
|
<ResourceCompile Include="resources.rc">
|
||||||
|
|
|
@ -141,15 +141,6 @@ bool ElementalControl::Create() {
|
||||||
root_element_->set_background_skin(TBIDC("background"));
|
root_element_->set_background_skin(TBIDC("background"));
|
||||||
root_element_->set_rect({0, 0, 1000, 1000});
|
root_element_->set_rect({0, 0, 1000, 1000});
|
||||||
|
|
||||||
// Block animations during init.
|
|
||||||
el::AnimationBlocker anim_blocker;
|
|
||||||
|
|
||||||
// TODO(benvanik): dummy UI.
|
|
||||||
auto message_window = new el::MessageWindow(root_element(), TBIDC(""));
|
|
||||||
message_window->Show("Title", "Hello!");
|
|
||||||
|
|
||||||
el::util::ShowDebugInfoSettingsWindow(root_element());
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -257,106 +248,106 @@ void ElementalControl::OnKeyPress(KeyEvent& e, bool is_down, bool is_char) {
|
||||||
auto special_key = el::SpecialKey::kUndefined;
|
auto special_key = el::SpecialKey::kUndefined;
|
||||||
if (!is_char) {
|
if (!is_char) {
|
||||||
switch (e.key_code()) {
|
switch (e.key_code()) {
|
||||||
case 38:
|
case 38:
|
||||||
special_key = el::SpecialKey::kUp;
|
special_key = el::SpecialKey::kUp;
|
||||||
break;
|
break;
|
||||||
case 39:
|
case 39:
|
||||||
special_key = el::SpecialKey::kRight;
|
special_key = el::SpecialKey::kRight;
|
||||||
break;
|
break;
|
||||||
case 40:
|
case 40:
|
||||||
special_key = el::SpecialKey::kDown;
|
special_key = el::SpecialKey::kDown;
|
||||||
break;
|
break;
|
||||||
case 37:
|
case 37:
|
||||||
special_key = el::SpecialKey::kLeft;
|
special_key = el::SpecialKey::kLeft;
|
||||||
break;
|
break;
|
||||||
case 112:
|
case 112:
|
||||||
special_key = el::SpecialKey::kF1;
|
special_key = el::SpecialKey::kF1;
|
||||||
break;
|
break;
|
||||||
case 113:
|
case 113:
|
||||||
special_key = el::SpecialKey::kF2;
|
special_key = el::SpecialKey::kF2;
|
||||||
break;
|
break;
|
||||||
case 114:
|
case 114:
|
||||||
special_key = el::SpecialKey::kF3;
|
special_key = el::SpecialKey::kF3;
|
||||||
break;
|
break;
|
||||||
case 115:
|
case 115:
|
||||||
special_key = el::SpecialKey::kF4;
|
special_key = el::SpecialKey::kF4;
|
||||||
break;
|
break;
|
||||||
case 116:
|
case 116:
|
||||||
special_key = el::SpecialKey::kF5;
|
special_key = el::SpecialKey::kF5;
|
||||||
break;
|
break;
|
||||||
case 117:
|
case 117:
|
||||||
special_key = el::SpecialKey::kF6;
|
special_key = el::SpecialKey::kF6;
|
||||||
break;
|
break;
|
||||||
case 118:
|
case 118:
|
||||||
special_key = el::SpecialKey::kF7;
|
special_key = el::SpecialKey::kF7;
|
||||||
break;
|
break;
|
||||||
case 119:
|
case 119:
|
||||||
special_key = el::SpecialKey::kF8;
|
special_key = el::SpecialKey::kF8;
|
||||||
break;
|
break;
|
||||||
case 120:
|
case 120:
|
||||||
special_key = el::SpecialKey::kF9;
|
special_key = el::SpecialKey::kF9;
|
||||||
break;
|
break;
|
||||||
case 121:
|
case 121:
|
||||||
special_key = el::SpecialKey::kF10;
|
special_key = el::SpecialKey::kF10;
|
||||||
break;
|
break;
|
||||||
case 122:
|
case 122:
|
||||||
special_key = el::SpecialKey::kF11;
|
special_key = el::SpecialKey::kF11;
|
||||||
break;
|
break;
|
||||||
case 123:
|
case 123:
|
||||||
special_key = el::SpecialKey::kF12;
|
special_key = el::SpecialKey::kF12;
|
||||||
break;
|
break;
|
||||||
case 33:
|
case 33:
|
||||||
special_key = el::SpecialKey::kPageUp;
|
special_key = el::SpecialKey::kPageUp;
|
||||||
break;
|
break;
|
||||||
case 34:
|
case 34:
|
||||||
special_key = el::SpecialKey::kPageDown;
|
special_key = el::SpecialKey::kPageDown;
|
||||||
break;
|
break;
|
||||||
case 36:
|
case 36:
|
||||||
special_key = el::SpecialKey::kHome;
|
special_key = el::SpecialKey::kHome;
|
||||||
break;
|
break;
|
||||||
case 35:
|
case 35:
|
||||||
special_key = el::SpecialKey::kEnd;
|
special_key = el::SpecialKey::kEnd;
|
||||||
break;
|
break;
|
||||||
case 45:
|
case 45:
|
||||||
special_key = el::SpecialKey::kInsert;
|
special_key = el::SpecialKey::kInsert;
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
special_key = el::SpecialKey::kTab;
|
special_key = el::SpecialKey::kTab;
|
||||||
break;
|
break;
|
||||||
case 46:
|
case 46:
|
||||||
special_key = el::SpecialKey::kDelete;
|
special_key = el::SpecialKey::kDelete;
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
special_key = el::SpecialKey::kBackspace;
|
special_key = el::SpecialKey::kBackspace;
|
||||||
break;
|
break;
|
||||||
case 13:
|
case 13:
|
||||||
special_key = el::SpecialKey::kEnter;
|
special_key = el::SpecialKey::kEnter;
|
||||||
break;
|
break;
|
||||||
case 27:
|
case 27:
|
||||||
special_key = el::SpecialKey::kEsc;
|
special_key = el::SpecialKey::kEsc;
|
||||||
break;
|
break;
|
||||||
case 93:
|
case 93:
|
||||||
if (!is_down && el::Element::focused_element) {
|
if (!is_down && el::Element::focused_element) {
|
||||||
el::Event ev(el::EventType::kContextMenu);
|
el::Event ev(el::EventType::kContextMenu);
|
||||||
ev.modifierkeys = GetModifierKeys();
|
ev.modifierkeys = GetModifierKeys();
|
||||||
el::Element::focused_element->InvokeEvent(ev);
|
el::Element::focused_element->InvokeEvent(ev);
|
||||||
e.set_handled(true);
|
e.set_handled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 16:
|
case 16:
|
||||||
modifier_shift_pressed_ = is_down;
|
modifier_shift_pressed_ = is_down;
|
||||||
break;
|
break;
|
||||||
case 17:
|
case 17:
|
||||||
modifier_cntrl_pressed_ = is_down;
|
modifier_cntrl_pressed_ = is_down;
|
||||||
break;
|
break;
|
||||||
// case xx:
|
// case xx:
|
||||||
// // alt ??
|
// // alt ??
|
||||||
// modifier_alt_pressed_ = is_down;
|
// modifier_alt_pressed_ = is_down;
|
||||||
// break;
|
// break;
|
||||||
case 91:
|
case 91:
|
||||||
modifier_super_pressed_ = is_down;
|
modifier_super_pressed_ = is_down;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit a03a3089954862677e2d30f85824b978a45eba22
|
Subproject commit a95e9a1984029382ae8e35260725d5697a702f8b
|
Loading…
Reference in New Issue