mirror of
https://github.com/gwm17/Specter.git
synced 2024-11-22 18:28:52 -05:00
Added in SourceDialog as well as event callback for detach. Should be mostly functional now (except for non-standard ports)
This commit is contained in:
parent
9297282221
commit
37e10eae1f
|
@ -20,7 +20,9 @@ namespace Navigator {
|
||||||
|
|
||||||
m_physicsLayer = new PhysicsLayer();
|
m_physicsLayer = new PhysicsLayer();
|
||||||
PushLayer(m_physicsLayer);
|
PushLayer(m_physicsLayer);
|
||||||
PushLayer(new EditorLayer());
|
EditorLayer* editor = new EditorLayer(); //memory handled by layer stack
|
||||||
|
editor->SetEventCallbackFunc(BIND_EVENT_FUNCTION(Application::OnEvent));
|
||||||
|
PushLayer(editor);
|
||||||
m_imgui_layer = new ImGuiLayer();
|
m_imgui_layer = new ImGuiLayer();
|
||||||
PushOverlay(m_imgui_layer);
|
PushOverlay(m_imgui_layer);
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,9 +98,12 @@ namespace Navigator {
|
||||||
{
|
{
|
||||||
if (ImGui::MenuItem("Attach Source"))
|
if (ImGui::MenuItem("Attach Source"))
|
||||||
{
|
{
|
||||||
|
m_sourceDialog.OpenSourceDialog();
|
||||||
}
|
}
|
||||||
if (ImGui::MenuItem("Detach Source"))
|
if (ImGui::MenuItem("Detach Source"))
|
||||||
{
|
{
|
||||||
|
PhysicsStopEvent event;
|
||||||
|
m_callbackFunc(event);
|
||||||
}
|
}
|
||||||
ImGui::EndMenu();
|
ImGui::EndMenu();
|
||||||
}
|
}
|
||||||
|
@ -142,6 +145,8 @@ namespace Navigator {
|
||||||
|
|
||||||
m_spectrumDialog.ImGuiRenderSpectrumDialog();
|
m_spectrumDialog.ImGuiRenderSpectrumDialog();
|
||||||
|
|
||||||
|
m_sourceDialog.ImGuiRenderSourceDialog();
|
||||||
|
|
||||||
m_spectrumPanel.OnImGuiRender();
|
m_spectrumPanel.OnImGuiRender();
|
||||||
|
|
||||||
if (ImGui::Begin("Spectra"))
|
if (ImGui::Begin("Spectra"))
|
||||||
|
|
|
@ -9,15 +9,20 @@
|
||||||
#include "SpectrumPanel.h"
|
#include "SpectrumPanel.h"
|
||||||
#include "FileDialog.h"
|
#include "FileDialog.h"
|
||||||
#include "SpectrumDialog.h"
|
#include "SpectrumDialog.h"
|
||||||
|
#include "SourceDialog.h"
|
||||||
|
|
||||||
namespace Navigator {
|
namespace Navigator {
|
||||||
|
|
||||||
class EditorLayer : public Layer
|
class EditorLayer : public Layer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
using EventCallbackFunc = std::function<void(Event&)>;
|
||||||
|
|
||||||
EditorLayer();
|
EditorLayer();
|
||||||
~EditorLayer();
|
~EditorLayer();
|
||||||
|
|
||||||
|
void SetEventCallbackFunc(const EventCallbackFunc& f) { m_callbackFunc = f; }
|
||||||
|
|
||||||
virtual void OnAttach() override;
|
virtual void OnAttach() override;
|
||||||
virtual void OnDetach() override;
|
virtual void OnDetach() override;
|
||||||
virtual void OnImGuiRender() override;
|
virtual void OnImGuiRender() override;
|
||||||
|
@ -26,9 +31,12 @@ namespace Navigator {
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
EventCallbackFunc m_callbackFunc;
|
||||||
|
|
||||||
SpectrumPanel m_spectrumPanel;
|
SpectrumPanel m_spectrumPanel;
|
||||||
FileDialog m_fileDialog;
|
FileDialog m_fileDialog;
|
||||||
SpectrumDialog m_spectrumDialog;
|
SpectrumDialog m_spectrumDialog;
|
||||||
|
SourceDialog m_sourceDialog;
|
||||||
|
|
||||||
//ImGui Settings
|
//ImGui Settings
|
||||||
bool dockspaceOpen = true;
|
bool dockspaceOpen = true;
|
||||||
|
|
82
Navigator/src/Navigator/Editor/SourceDialog.cpp
Normal file
82
Navigator/src/Navigator/Editor/SourceDialog.cpp
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
#include "SourceDialog.h"
|
||||||
|
#include "Navigator/Events/PhysicsEvent.h"
|
||||||
|
#include "Navigator/Events/Event.h"
|
||||||
|
#include "Navigator/Application.h"
|
||||||
|
|
||||||
|
#include "imgui.h"
|
||||||
|
#include "misc/cpp/imgui_stdlib.h"
|
||||||
|
|
||||||
|
namespace Navigator {
|
||||||
|
|
||||||
|
SourceDialog::SourceDialog() :
|
||||||
|
m_openFlag(false), m_chosenWindow(2000000)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
SourceDialog::~SourceDialog()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void SourceDialog::ImGuiRenderSourceDialog()
|
||||||
|
{
|
||||||
|
static bool onlineFlag = false;
|
||||||
|
static bool offlineFlag = false;
|
||||||
|
static std::vector<DataSource::SourceType> availTypes = { DataSource::SourceType::CompassOnline, DataSource::SourceType::CompassOffline };
|
||||||
|
|
||||||
|
if (m_openFlag)
|
||||||
|
{
|
||||||
|
onlineFlag = false;
|
||||||
|
offlineFlag = false;
|
||||||
|
m_openFlag = false;
|
||||||
|
m_chosenType = DataSource::SourceType::None;
|
||||||
|
m_chosenLocation = "";
|
||||||
|
m_chosenWindow = 2000000;
|
||||||
|
ImGui::OpenPopup("Attach Source");
|
||||||
|
}
|
||||||
|
if (ImGui::BeginPopupModal("Attach Source"))
|
||||||
|
{
|
||||||
|
if (ImGui::BeginCombo("Source Type", ConvertDataSourceTypeToString(m_chosenType).c_str()))
|
||||||
|
{
|
||||||
|
for (auto& type : availTypes)
|
||||||
|
{
|
||||||
|
if (ImGui::Selectable(ConvertDataSourceTypeToString(type).c_str(), type == m_chosenType, ImGuiSelectableFlags_DontClosePopups))
|
||||||
|
{
|
||||||
|
m_chosenType = type;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ImGui::EndCombo();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_chosenType == DataSource::SourceType::CompassOnline)
|
||||||
|
{
|
||||||
|
ImGui::InputText("Hostname", &m_chosenLocation);
|
||||||
|
}
|
||||||
|
else if (m_chosenType == DataSource::SourceType::CompassOffline)
|
||||||
|
{
|
||||||
|
ImGui::InputText("Run Directory", &m_chosenLocation);
|
||||||
|
if (ImGui::Button("Choose Location"))
|
||||||
|
{
|
||||||
|
m_fileDialog.SetOpenDirDialog(true);
|
||||||
|
}
|
||||||
|
auto& temp = m_fileDialog.ImGuiRenderOpenDir();
|
||||||
|
if (temp != "")
|
||||||
|
m_chosenLocation = temp;
|
||||||
|
}
|
||||||
|
ImGui::InputInt("Coincidence Window (ps)", &m_chosenWindow);
|
||||||
|
|
||||||
|
|
||||||
|
if (ImGui::Button("Ok"))
|
||||||
|
{
|
||||||
|
PhysicsStartEvent event(m_chosenLocation, m_chosenType, m_chosenWindow);
|
||||||
|
Application::Get().OnEvent(event);
|
||||||
|
ImGui::CloseCurrentPopup();
|
||||||
|
}
|
||||||
|
if (ImGui::Button("Cancel"))
|
||||||
|
{
|
||||||
|
ImGui::CloseCurrentPopup();
|
||||||
|
}
|
||||||
|
ImGui::EndPopup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
28
Navigator/src/Navigator/Editor/SourceDialog.h
Normal file
28
Navigator/src/Navigator/Editor/SourceDialog.h
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
#ifndef SOURCE_DIALOG_H
|
||||||
|
#define SOURCE_DIALOG_H
|
||||||
|
|
||||||
|
#include "FileDialog.h"
|
||||||
|
#include "Navigator/Physics/DataSource.h"
|
||||||
|
|
||||||
|
namespace Navigator {
|
||||||
|
|
||||||
|
class NAV_API SourceDialog
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
SourceDialog();
|
||||||
|
~SourceDialog();
|
||||||
|
|
||||||
|
void ImGuiRenderSourceDialog();
|
||||||
|
|
||||||
|
inline void OpenSourceDialog() { m_openFlag = true; }
|
||||||
|
private:
|
||||||
|
bool m_openFlag;
|
||||||
|
DataSource::SourceType m_chosenType;
|
||||||
|
std::string m_chosenLocation;
|
||||||
|
FileDialog m_fileDialog;
|
||||||
|
int m_chosenWindow;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue
Block a user