Files
Ralph Sennhauser df06b6895e Don't mix static and dynamic events
Commit 309ed5ef28 used dynamic events
which prevents some other menu items from working properly. So don't mix
static and dynamic events for top window.

Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2026-07-25 14:05:38 +02:00

127 lines
3.7 KiB
C++

/* Copyright (C) 2026 Wildfire Games.
* This file is part of 0 A.D.
*
* 0 A.D. is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* 0 A.D. is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with 0 A.D. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef INCLUDED_SCENARIOEDITOR
#define INCLUDED_SCENARIOEDITOR
#include "tools/atlas/AtlasObject/AtlasObject.h"
#include "tools/atlas/AtlasUI/CustomControls/FileHistory/FileHistory.h"
#include "tools/atlas/AtlasUI/General/Observable.h"
#include "tools/atlas/AtlasUI/ScenarioEditor/SectionLayout.h"
#include "tools/atlas/AtlasUI/ScenarioEditor/Tools/Common/MiscState.h"
#include "tools/atlas/AtlasUI/ScenarioEditor/Tools/Common/ObjectSettings.h"
#include "tools/atlas/AtlasUI/ScenarioEditor/Tools/Common/Tools.h"
#include <map>
#include <vector>
#include <wx/event.h>
#include <wx/frame.h>
#include <wx/icon.h>
#include <wx/string.h>
#include <wx/timer.h>
class AtlasWindowCommandProc;
class wxWindow;
class ScenarioEditor : public wxFrame
{
public:
ScenarioEditor(wxWindow* parent);
void OnClose(wxCloseEvent& event);
void OnTimer(wxTimerEvent& event);
void OnIdle(wxIdleEvent& event);
wxToolBar* OnCreateToolBar(long style, wxWindowID id, const wxString &name);
void OnNew(wxCommandEvent& event);
void OnOpen(wxCommandEvent& event);
void OnSave(wxCommandEvent& event);
void OnSaveAs(wxCommandEvent& event);
void OnImportHeightmap(wxCommandEvent& event);
void OnMRUFile(wxCommandEvent& event);
void OnQuit(wxCommandEvent& event);
void OnUndo(wxCommandEvent& event);
void OnRedo(wxCommandEvent& event);
void OnCopy(wxCommandEvent& event);
void OnPaste(wxCommandEvent& event);
void OnWireframe(wxCommandEvent& event);
void OnSmoothFramerate(wxCommandEvent& event);
void OnBirdsEyeView(wxCommandEvent& event);
void OnFullscreen(wxCommandEvent& event);
void OnCameraReset(wxCommandEvent& event);
void OnMessageTrace(wxCommandEvent& event);
void OnScreenshot(wxCommandEvent& event);
void OnMediaPlayer(wxCommandEvent& event);
void OnJavaScript(wxCommandEvent& event);
void OnDumpState(wxCommandEvent& event);
void OnSelectedObjectsChange(const std::vector<AtlasMessage::ObjectID>& selectedObjects);
void OnHelp(wxCommandEvent& event);
void OnMenuOpen(wxMenuEvent& event);
bool OpenFile(const wxString& name, const wxString& filename);
void NotifyOnMapReload();
static AtlasWindowCommandProc& GetCommandProc();
static float GetSpeedModifier();
Observable<ObjectSettings>& GetObjectSettings() { return m_ObjectSettings; }
Observable<AtObj>& GetMapSettings() { return m_MapSettings; }
ToolManager& GetToolManager() { return m_ToolManager; }
void SelectPage(const wxString& classname) { m_SectionLayout.SelectPage(classname); }
bool DiscardChangesDialog();
private:
ToolManager m_ToolManager;
wxTimer m_Timer;
wxTimer m_RenderTimer;
SectionLayout m_SectionLayout;
Observable<ObjectSettings> m_ObjectSettings;
Observable<AtObj> m_MapSettings;
void SetOpenFilename(const wxString& filename);
wxString m_OpenFilename;
FileHistory m_FileHistory;
wxIcon m_Icon;
struct HelpItem
{
wxString m_Title, m_Tooltip, m_URL;
HelpItem(const wxString& title, const wxString& tooltip, const wxString& url)
: m_Title(title), m_Tooltip(tooltip), m_URL(url)
{}
};
std::map<int, HelpItem> m_HelpData;
wxDECLARE_EVENT_TABLE();
};
#endif // INCLUDED_SCENARIOEDITOR