Skip to content

Commit

Permalink
Update to latest zwidget
Browse files Browse the repository at this point in the history
  • Loading branch information
dpjudas committed May 11, 2024
1 parent fb53642 commit 5aafd86
Show file tree
Hide file tree
Showing 22 changed files with 1,491 additions and 23 deletions.
143 changes: 143 additions & 0 deletions SurrealEngine/UI/Editor/EditorMainWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,17 @@
#include "Package/PackageManager.h"
#include "UObject/UActor.h"
#include "UObject/ULevel.h"
#include <zwidget/widgets/menubar/menubar.h>

EditorMainWindow::EditorMainWindow()
{
GetMenubar()->AddItem("File", [this](Menu* menu) { OnFileMenu(menu); });
GetMenubar()->AddItem("Edit", [this](Menu* menu) { OnEditMenu(menu); });
GetMenubar()->AddItem("View", [this](Menu* menu) { OnViewMenu(menu); });
GetMenubar()->AddItem("Tools", [this](Menu* menu) { OnToolsMenu(menu); });
//GetMenubar()->AddItem("Window", [this](Menu* menu) { OnWindowMenu(menu); });
GetMenubar()->AddItem("Help", [this](Menu* menu) { OnHelpMenu(menu); });

Workspace = new EditorWorkspace(this);
SetCentralWidget(Workspace);

Expand All @@ -23,3 +31,138 @@ EditorMainWindow::EditorMainWindow()
EditorMainWindow::~EditorMainWindow()
{
}

void EditorMainWindow::OnFileMenu(Menu* menu)
{
menu->AddItem({}, "New", [this]() { OnFileNew(); });
menu->AddItem({}, "Open", [this]() { OnFileOpen(); });
menu->AddSeparator();
menu->AddItem({}, "Save", [this]() { OnFileSave(); });
menu->AddSeparator();
menu->AddItem({}, "Exit", [this]() { OnFileExit(); });
}

void EditorMainWindow::OnEditMenu(Menu* menu)
{
menu->AddItem({}, "Undo", [this]() { OnEditUndo(); });
menu->AddItem({}, "Redo", [this]() { OnEditRedo(); });
menu->AddSeparator();
menu->AddItem({}, "Cut", [this]() { OnEditCut(); });
menu->AddItem({}, "Copy", [this]() { OnEditCopy(); });
menu->AddItem({}, "Paste", [this]() { OnEditPaste(); });
menu->AddItem({}, "Delete", [this]() { OnEditDelete(); });
menu->AddSeparator();
menu->AddItem({}, "Select all", [this]() { OnEditSelectAll(); });
}

void EditorMainWindow::OnViewMenu(Menu* menu)
{
menu->AddItem({}, "Packages", [this]() { OnViewPackages(); });
menu->AddItem({}, "Textures", [this]() { OnViewTextures(); });
menu->AddItem({}, "Meshes", [this]() { OnViewMeshes(); });
menu->AddItem({}, "Brushes", [this]() { OnViewBrushes(); });
menu->AddItem({}, "Actors", [this]() { OnViewActors(); });
}

void EditorMainWindow::OnToolsMenu(Menu* menu)
{
menu->AddItem({}, "Theme", [this]() { OnToolsTheme(); });
menu->AddItem({}, "Customize", [this]() { OnToolsCustomize(); });
menu->AddItem({}, "Options", [this]() { OnToolsOptions(); });
}

/*
void EditorMainWindow::OnWindowMenu(Menu* menu)
{
}
*/

void EditorMainWindow::OnHelpMenu(Menu* menu)
{
menu->AddItem({}, "View Help", [this]() { OnHelpHome(); });
menu->AddItem({}, "About Surreal Engine", [this]() { OnHelpAbout(); });
}

void EditorMainWindow::OnFileNew()
{
}

void EditorMainWindow::OnFileOpen()
{
}

void EditorMainWindow::OnFileSave()
{
}

void EditorMainWindow::OnFileExit()
{
}

void EditorMainWindow::OnEditUndo()
{
}

void EditorMainWindow::OnEditRedo()
{
}

void EditorMainWindow::OnEditCut()
{
}

void EditorMainWindow::OnEditCopy()
{
}

void EditorMainWindow::OnEditPaste()
{
}

void EditorMainWindow::OnEditDelete()
{
}

void EditorMainWindow::OnEditSelectAll()
{
}

void EditorMainWindow::OnViewPackages()
{
}

void EditorMainWindow::OnViewTextures()
{
}

void EditorMainWindow::OnViewMeshes()
{
}

void EditorMainWindow::OnViewBrushes()
{
}

void EditorMainWindow::OnViewActors()
{
}

void EditorMainWindow::OnToolsTheme()
{
}

void EditorMainWindow::OnToolsCustomize()
{
}

void EditorMainWindow::OnToolsOptions()
{
}

void EditorMainWindow::OnHelpHome()
{
}

void EditorMainWindow::OnHelpAbout()
{
}
34 changes: 34 additions & 0 deletions SurrealEngine/UI/Editor/EditorMainWindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include <zwidget/widgets/mainwindow/mainwindow.h>

class EditorWorkspace;
class Menu;

class EditorMainWindow : public MainWindow
{
Expand All @@ -14,4 +15,37 @@ class EditorMainWindow : public MainWindow
EditorWorkspace* Workspace = nullptr;

void OnClose() override { DisplayWindow::ExitLoop(); }

void OnFileMenu(Menu* menu);
void OnEditMenu(Menu* menu);
void OnViewMenu(Menu* menu);
void OnToolsMenu(Menu* menu);
//void OnWindowMenu(Menu* menu);
void OnHelpMenu(Menu* menu);

void OnFileNew();
void OnFileOpen();
void OnFileSave();
void OnFileExit();

void OnEditUndo();
void OnEditRedo();
void OnEditCut();
void OnEditCopy();
void OnEditPaste();
void OnEditDelete();
void OnEditSelectAll();

void OnViewPackages();
void OnViewTextures();
void OnViewMeshes();
void OnViewBrushes();
void OnViewActors();

void OnToolsTheme();
void OnToolsCustomize();
void OnToolsOptions();

void OnHelpHome();
void OnHelpAbout();
};
9 changes: 8 additions & 1 deletion Thirdparty/ZWidget/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ set(ZWIDGET_SOURCES
src/widgets/listview/listview.cpp
src/widgets/tabwidget/tabwidget.cpp
src/window/window.cpp
src/systemdialogs/folder_browse_dialog.cpp
src/systemdialogs/open_file_dialog.cpp
src/systemdialogs/save_file_dialog.cpp
)

set(ZWIDGET_INCLUDES
Expand Down Expand Up @@ -63,6 +66,9 @@ set(ZWIDGET_INCLUDES
include/zwidget/widgets/listview/listview.h
include/zwidget/widgets/tabwidget/tabwidget.h
include/zwidget/window/window.h
include/zwidget/systemdialogs/folder_browse_dialog.h
include/zwidget/systemdialogs/open_file_dialog.h
include/zwidget/systemdialogs/save_file_dialog.h
)

set(ZWIDGET_WIN32_SOURCES
Expand Down Expand Up @@ -97,6 +103,7 @@ source_group("src\\widgets\\checkboxlabel" REGULAR_EXPRESSION "${CMAKE_CURRENT_S
source_group("src\\widgets\\listview" REGULAR_EXPRESSION "${CMAKE_CURRENT_SOURCE_DIR}/src/widgets/listview/.+")
source_group("src\\widgets\\tabwidget" REGULAR_EXPRESSION "${CMAKE_CURRENT_SOURCE_DIR}/src/widgets/tabwidget/.+")
source_group("src\\window" REGULAR_EXPRESSION "${CMAKE_CURRENT_SOURCE_DIR}/src/window/.+")
source_group("src\\systemdialogs" REGULAR_EXPRESSION "${CMAKE_CURRENT_SOURCE_DIR}/src/systemdialogs/.+")
source_group("include" REGULAR_EXPRESSION "${CMAKE_CURRENT_SOURCE_DIR}/include/zwidget/.+")
source_group("include\\core" REGULAR_EXPRESSION "${CMAKE_CURRENT_SOURCE_DIR}/include/zwidget/core/.+")
source_group("include\\widgets" REGULAR_EXPRESSION "${CMAKE_CURRENT_SOURCE_DIR}/include/zwidget/widgets/.+")
Expand All @@ -116,6 +123,7 @@ source_group("include\\widgets\\tabwidget" REGULAR_EXPRESSION "${CMAKE_CURRENT_S
source_group("include\\window" REGULAR_EXPRESSION "${CMAKE_CURRENT_SOURCE_DIR}/include/zwidget/window/.+")
source_group("include\\window\\win32" REGULAR_EXPRESSION "${CMAKE_CURRENT_SOURCE_DIR}/include/zwidget/window/win32/.+")
source_group("include\\window\\sdl2" REGULAR_EXPRESSION "${CMAKE_CURRENT_SOURCE_DIR}/include/zwidget/window/sdl2/.+")
source_group("include\\systemdialogs" REGULAR_EXPRESSION "${CMAKE_CURRENT_SOURCE_DIR}/include/zwidget/systemdialogs/.+")

include_directories(include include/zwidget src)

Expand All @@ -136,7 +144,6 @@ endif()

if(MSVC)
# Use all cores for compilation
#set(CMAKE_CXX_FLAGS "/MP ${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS "/MP ${CMAKE_CXX_FLAGS} /D_ITERATOR_DEBUG_LEVEL=0")

# Ignore warnings in third party code
Expand Down
2 changes: 2 additions & 0 deletions Thirdparty/ZWidget/include/zwidget/core/widget.h
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,8 @@ class Widget : DisplayWindowHost

static Size GetScreenSize();

void* GetNativeHandle();

protected:
virtual void OnPaintFrame(Canvas* canvas);
virtual void OnPaint(Canvas* canvas) { }
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@

#pragma once

#include <memory>
#include <string>

class Widget;

/// \brief Displays the system folder browsing dialog
class BrowseFolderDialog
{
public:
/// \brief Constructs an browse folder dialog.
static std::unique_ptr<BrowseFolderDialog> Create(Widget*owner);

virtual ~BrowseFolderDialog() = default;

/// \brief Get the full path of the directory selected.
virtual std::string SelectedPath() const = 0;

/// \brief Sets the initial directory that is displayed.
virtual void SetInitialDirectory(const std::string& path) = 0;

/// \brief Sets the text that appears in the title bar.
virtual void SetTitle(const std::string& title) = 0;

/// \brief Shows the file dialog.
/// \return true if the user clicks the OK button of the dialog that is displayed, false otherwise.
virtual bool Show() = 0;
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@

#pragma once

#include <memory>
#include <string>
#include <vector>

class Widget;

/// \brief Displays the system open file dialog.
class OpenFileDialog
{
public:
/// \brief Constructs an open file dialog.
static std::unique_ptr<OpenFileDialog> Create(Widget* owner);

virtual ~OpenFileDialog() = default;

/// \brief Get the full path of the file selected.
///
/// If multiple files are selected, this returns the first file.
virtual std::string Filename() const = 0;

/// \brief Gets an array that contains one file name for each selected file.
virtual std::vector<std::string> Filenames() const = 0;

/// \brief Sets if multiple files can be selected or not.
/// \param multiselect = When true, multiple items can be selected.
virtual void SetMultiSelect(bool multiselect) = 0;

/// \brief Sets a string containing the full path of the file selected.
virtual void SetFilename(const std::string &filename) = 0;

/// \brief Sets the default extension to use.
virtual void SetDefaultExtension(const std::string& extension) = 0;

/// \brief Add a filter that determines what types of files are displayed.
virtual void AddFilter(const std::string &filter_description, const std::string &filter_extension) = 0;

/// \brief Clears all filters.
virtual void ClearFilters() = 0;

/// \brief Sets a default filter, on a 0-based index.
virtual void SetFilterIndex(int filter_index) = 0;

/// \brief Sets the initial directory that is displayed.
virtual void SetInitialDirectory(const std::string &path) = 0;

/// \brief Sets the text that appears in the title bar.
virtual void SetTitle(const std::string &title) = 0;

/// \brief Shows the file dialog.
/// \return true if the user clicks the OK button of the dialog that is displayed, false otherwise.
virtual bool Show() = 0;
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@

#pragma once

#include <memory>
#include <string>
#include <vector>

class Widget;

/// \brief Displays the system save file dialog.
class SaveFileDialog
{
public:
/// \brief Constructs a save file dialog.
static std::unique_ptr<SaveFileDialog> Create(Widget *owner);

virtual ~SaveFileDialog() = default;

/// \brief Get the full path of the file selected.
virtual std::string Filename() const = 0;

/// \brief Sets a string containing the full path of the file selected.
virtual void SetFilename(const std::string &filename) = 0;

/// \brief Sets the default extension to use.
virtual void SetDefaultExtension(const std::string& extension) = 0;

/// \brief Add a filter that determines what types of files are displayed.
virtual void AddFilter(const std::string &filter_description, const std::string &filter_extension) = 0;

/// \brief Clears all filters.
virtual void ClearFilters() = 0;

/// \brief Sets a default filter, on a 0-based index.
virtual void SetFilterIndex(int filter_index) = 0;

/// \brief Sets the initial directory that is displayed.
virtual void SetInitialDirectory(const std::string &path) = 0;

/// \brief Sets the text that appears in the title bar.
virtual void SetTitle(const std::string &title) = 0;

/// \brief Shows the file dialog.
/// \return true if the user clicks the OK button of the dialog that is displayed, false otherwise.
virtual bool Show() = 0;
};
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ class ImageBox : public Widget

void SetImage(std::shared_ptr<Image> newImage);

double GetPreferredWidth() const;
double GetPreferredHeight() const;

protected:
Expand Down
Loading

0 comments on commit 5aafd86

Please sign in to comment.