From 149e7c0836927e14a926a952bd1a7f0d1b49e779 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Fri, 5 May 2023 15:46:58 -0400 Subject: Organised repo --- src/tracker_frame.cpp | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 src/tracker_frame.cpp (limited to 'src/tracker_frame.cpp') diff --git a/src/tracker_frame.cpp b/src/tracker_frame.cpp new file mode 100644 index 0000000..2a862a5 --- /dev/null +++ b/src/tracker_frame.cpp @@ -0,0 +1,86 @@ +#include "tracker_frame.h" + +#include "ap_state.h" +#include "connection_dialog.h" +#include "tracker_config.h" +#include "tracker_panel.h" + +enum TrackerFrameIds { ID_CONNECT = 1 }; + +wxDEFINE_EVENT(STATE_CHANGED, wxCommandEvent); +wxDEFINE_EVENT(STATUS_CHANGED, wxCommandEvent); + +TrackerFrame::TrackerFrame() + : wxFrame(nullptr, wxID_ANY, "Lingo Archipelago Tracker", wxDefaultPosition, + wxDefaultSize, wxDEFAULT_FRAME_STYLE | wxFULL_REPAINT_ON_RESIZE) { + ::wxInitAllImageHandlers(); + + AP_SetTrackerFrame(this); + + SetSize(1280, 728); + + wxMenu *menuFile = new wxMenu(); + menuFile->Append(ID_CONNECT, "&Connect"); + menuFile->Append(wxID_EXIT); + + wxMenu *menuHelp = new wxMenu(); + menuHelp->Append(wxID_ABOUT); + + wxMenuBar *menuBar = new wxMenuBar(); + menuBar->Append(menuFile, "&File"); + menuBar->Append(menuHelp, "&Help"); + + SetMenuBar(menuBar); + + CreateStatusBar(); + SetStatusText("Not connected to Archipelago."); + + Bind(wxEVT_MENU, &TrackerFrame::OnAbout, this, wxID_ABOUT); + Bind(wxEVT_MENU, &TrackerFrame::OnExit, this, wxID_EXIT); + Bind(wxEVT_MENU, &TrackerFrame::OnConnect, this, ID_CONNECT); + Bind(STATE_CHANGED, &TrackerFrame::OnStateChanged, this); + Bind(STATUS_CHANGED, &TrackerFrame::OnStatusChanged, this); + + tracker_panel_ = new TrackerPanel(this); +} + +void TrackerFrame::SetStatusMessage(std::string message) { + wxCommandEvent *event = new wxCommandEvent(STATUS_CHANGED); + event->SetString(message.c_str()); + + QueueEvent(event); +} + +void TrackerFrame::UpdateIndicators() { + QueueEvent(new wxCommandEvent(STATE_CHANGED)); +} + +void TrackerFrame::OnAbout(wxCommandEvent &event) { + wxMessageBox("Lingo Archipelago Tracker by hatkirby", + "About lingo-ap-tracker", wxOK | wxICON_INFORMATION); +} + +void TrackerFrame::OnExit(wxCommandEvent &event) { Close(true); } + +void TrackerFrame::OnConnect(wxCommandEvent &event) { + ConnectionDialog dlg; + + if (dlg.ShowModal() == wxID_OK) { + GetTrackerConfig().ap_server = dlg.GetServerValue(); + GetTrackerConfig().ap_player = dlg.GetPlayerValue(); + GetTrackerConfig().ap_password = dlg.GetPasswordValue(); + GetTrackerConfig().Save(); + + AP_Connect(dlg.GetServerValue(), dlg.GetPlayerValue(), + dlg.GetPasswordValue()); + } +} + +void TrackerFrame::OnStateChanged(wxCommandEvent &event) { + tracker_panel_->UpdateIndicators(); + Refresh(); +} + +void TrackerFrame::OnStatusChanged(wxCommandEvent &event) { + SetStatusText(event.GetString()); +} -- cgit 1.4.1